定义所需要用到的变量
private static final String ENCRYPTION_KEY = "HI, I'M UPYOU.";
private static final String CHARSET_NAME = "UTF-8";
private static final String ALGORITHM_NAME = "DES";
private static Key key;
将ENCRYPTION_KEY
作为一个加密密钥,将ENCRYPTION_KEY
转成Key
类型。
static {
try {
// 生成 ALGORITHM_NAME 算法对象
KeyGenerator edsAlgorithmInstance = KeyGenerator.getInstance(ALGORITHM_NAME);
// 使用SHA1安全策略
SecureRandom sha1PRNG = SecureRandom.getInstance("SHA1PRNG");
// 设置密钥 ENCRYPTION_KEY
sha1PRNG.setSeed(ENCRYPTION_KEY.getBytes());
// 初始化KeyGenerator对象
edsAlgorithmInstance.init(sha1PRNG);
//生成 key
key = edsAlgorithmInstance.generateKey();
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
}
}
创建对字符串加密方法 encrypetString
public static String encryptString(){}
encrypetString
方法中操作
需要使用BASE64Encoder
将加密后的结果转成 String
BASE64Encoder base64Encoder = new BASE64Encoder();
得到待加密字符串基于CHARSET_NAME
编码的byte[]
byte[] bytes = str.getBytes(CHARSET_NAME);
创建基于ALGORITHM_NAME
的加密算法
Cipher cipher = Cipher.getInstance(ALGORITHM_NAME);
初始化加密设置,使用无三参初始化方式。
cipher.init(Cipher.ENCRYPT_MODE, key);
将密码进行加密,此处返回的是加密后的byte[]
对象
byte[] doFinal = cipher.doFinal(bytes);
使用 BASE64Encoder
将加密结果转成 String
后返回
return base64Encoder.encode(doFinal);
public static String encryptString(String str){
//基于BASE64编码,接收byte[]并转换成String
BASE64Encoder base64Encoder = new BASE64Encoder();
try {
// 按UTF8编码
byte[] bytes = str.getBytes(CHARSET_NAME);
// 获取加密对象
Cipher cipher = Cipher.getInstance(ALGORITHM_NAME);
// 初始化密码信息
cipher.init(Cipher.ENCRYPT_MODE, key);
// 加密
byte[] doFinal = cipher.doFinal(bytes);
// byte[]to encode好的String并返回
return base64Encoder.encode(doFinal);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
本文由 UpYou 创作,采用 知识共享署名4.0
国际许可协议进行许可
本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名
最后编辑时间为: Nov 9,2020