AES加解密:
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
使用SHA1PRNG算法生成AES密钥时,当encodeRules不变时,生成的密钥也是不变的,
所以加密和解密之前都需要用SHA1PRNG算法生成AES密钥,然后再来加解密
这个SHA1PRNG算法与AES的几种模式并没有什么关系
(1)SecureRandom random = SecureRandom.getInstance("SHA1PRNG");这个只适用于Windows,
对于手机版的来说,Android7.0以下的系统用 SecureRandom random = SecureRandom.getInstance("SHA1PRNG","Crypto");
Android7.0及以上系统需要重新定义Crypto
/**
* AES加密
* 1.构造密钥生成器
* 2.根据ecnodeRules规则初始化密钥生成器
* 3.产生密钥
* 4.创建和初始化密码器
* 5.内容加密
* 6.返回字符串
*/
public static String AESEncode(String content, String encodeRules) {
try {
//1.构造密钥生成器,指定为AES算法,不区分大小写
KeyGenerator keygen = KeyGenerator.getInstance("AES");
//2.根据ecnodeRules规则初始化密钥生成器
//生成一个128位的随机源,根据传入的字节数组
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
random.setSeed(encodeRules.getBytes());
keygen.init(128, random);
//3.产生原始对称密钥
SecretKey original_key = keygen.generateKey();
//4.获得原始对称密钥的字节数组
byte[] raw = original_key.getEncoded();
//5.根据字节数组生成AES密钥 <
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
使用SHA1PRNG算法生成AES密钥时,当encodeRules不变时,生成的密钥也是不变的,
所以加密和解密之前都需要用SHA1PRNG算法生成AES密钥,然后再来加解密
这个SHA1PRNG算法与AES的几种模式并没有什么关系
(1)SecureRandom random = SecureRandom.getInstance("SHA1PRNG");这个只适用于Windows,
对于手机版的来说,Android7.0以下的系统用 SecureRandom random = SecureRandom.getInstance("SHA1PRNG","Crypto");
Android7.0及以上系统需要重新定义Crypto
/**
* AES加密
* 1.构造密钥生成器
* 2.根据ecnodeRules规则初始化密钥生成器
* 3.产生密钥
* 4.创建和初始化密码器
* 5.内容加密
* 6.返回字符串
*/
public static String AESEncode(String content, String encodeRules) {
try {
//1.构造密钥生成器,指定为AES算法,不区分大小写
KeyGenerator keygen = KeyGenerator.getInstance("AES");
//2.根据ecnodeRules规则初始化密钥生成器
//生成一个128位的随机源,根据传入的字节数组
SecureRandom random = SecureRandom.getInstance("SHA1PRNG");
random.setSeed(encodeRules.getBytes());
keygen.init(128, random);
//3.产生原始对称密钥
SecretKey original_key = keygen.generateKey();
//4.获得原始对称密钥的字节数组
byte[] raw = original_key.getEncoded();
//5.根据字节数组生成AES密钥 <