1.一种基于Android系统的密钥保护管理方法,其特征在于:所述密钥保护管理方法包括密钥加密过程和密钥解密过程,
所述密钥加密过程包括如下步骤:
1.1:随机生成AES算法加解密密钥,即AES密钥作为数据加解密密钥;
1.2:设置密码,同时使用随机数生成器生成盐1(salt),运用密码与盐1(salt)生成SM4算法的密钥1并用于加密AES密钥,将AES密钥密文存入数据库;
1.3:密码经过MD5散列运算,将得到的散列值与盐1(salt)一起存入数据库;
1.4:用户设置密保问题与密保问题答案,防止密码被遗忘后无法重新设置密码的情况发生,用户设置的密保问题答案与随机生成的盐2(salt)组合对密码进行SM4加密,将密保问题答案经过MD5运算得到散列值,并将密码密文、密保问题以及密保问题答案散列值存入数据库中;
至此,有关密钥的保护加密步骤已经完成,数据库中存储的数据包括AES密钥密文、盐1(salt)、密码散列值、盐2(salt)、密码密文、密保问题以及密保问题答案散列值;
从数据库存储的密钥密文中得到密钥明文也就是密钥解密过程,所述密钥解密过程包括如下步骤:
2.1:用户键入密码,如果密码正确则与数据库中的盐1(salt)组合生成SM4密钥将AES密钥密文解密;
2.2:如果密码不正确,需要修改密码,需要先回答密保问题;若密保问题答案正确,解密旧密码,然后解密AES密钥密文;更新数据库与密码有关的数据,用新密码和盐1(salt)加密AES密文,并用密保问题重新加密新密码。
2.如权利要求1所述的一种基于Android系统的密钥保护管理方法,其特征在于:所述步骤1.4中,用户设置密保问题1、2及其答案,将密保问题1、2存入数据库,并将密保问题的答案1、2进行MD5散列运算,然后将散列值存入数据库,将两个密保问题的答案拼接为一个答案数据,将其传入SM4的密钥生成器,返回盐2(salt),将盐2(salt)与答案拼接数据组合生成SM4密钥2,用此密钥2对1.2中设置的密码进行SM4加密,将加密得到的序列,盐2(salt)存入数据库。
3.如权利要求2所述的一种基于Android系统的密钥保护管理方法,其特征在于:所述步骤2.2中,如果密码不正确,用户可以修改密码,首先进行密保问题安全认证,将输入的密保问题答案经过散列运算得到散列值,与数据库中的密保问题答案散列值进行比对,若比对成功则取出盐2(salt),将答案与盐2(salt)组合为SM4密钥2,用SM4密钥2对密码密文进行解密,得到旧密码,用旧密码与盐1(salt)组合生成SM4密钥1,将加密过的AES密钥密文数据取出,用SM4密钥1进行解密,获得AES密钥,更新数据库与密码有关的数据,用新密码和盐
1(salt)加密AES密文,并用密保问题重新加密新密码。