BytesEncryptor enc = Encryptors.standard("encryptionPassword",saltKey);
byte[] encryptedPwd = enc.encrypt(pwd.getBytes());
byte[] decryptedPwd = enc.decrypt(encryptedPwd );
我使用了BytesEncryptors(Spring安全性)来加密/解密密码。我在byte []中有加密/解密的密码。我想获得加密/解密的密码。
所以我做的是,
System.out.println(new String(encryptedPwd,"UTF-8"));
System.out.println(new String(decryptedPwd,"UTF-8"));
第二条线运作良好。第一行没有给我编码密码的字符串表示。它显示出一些无用的东西。
1)为什么我的第一行不像第二行那样工作?
2)如果我想对我的spring bean配置(XML文件)使用相同的加密算法,我该怎么办?像DataSource Info /其他一些登录凭据应该用XML文件加密。(*我不在这里使用Hibernate)
答案 0 :(得分:1)
对于“随机”字节数组的文本安全表示,请使用base64编码:
System.out.println(Base64Utils.encodeToString(encryptedPwd));
您可以使用Base64Utils进行编码和解码。
答案 1 :(得分:0)
您可以简单地将字节数组打印为十六进制字符串。
例如:
如果您使用 Spring Security,只需使用返回 org.springframework.security.crypto.codec.Hex#encode
的方法 char[]
。
在 HexEncodingTextEncryptor
类中,您还可以找到此快捷方式:
public String encrypt(String text) {
return new String(Hex.encode(this.encryptor.encrypt(Utf8.encode(text))));
}