gpt4 book ai didi

java - 如何检查 Java 中的加密结果(SHA1PRNG 和 AES)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:31:48 26 4
gpt4 key购买 nike

我制作了一个类,其中包含使用 SHA1PRNG 和 AES 算法加密数据的方法。

public String encrypt(String str, String pw) throws Exception{ 
byte[] bytes = pw.getBytes();
SecureRandom sr = SecureRandom.getInstance("SHA1PRNG");
sr.setSeed(bytes);
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128,sr);

SecretKey skey = kgen.generateKey();
SecretKeySpec skeySpec = new SecretKeySpec(skey.getEncoded(),"AES");
Cipher c = Cipher.getInstance("AES");
c.init(Cipher.ENCRYPT_MODE, skeySpec);

byte[] encrypted = c.doFinal(str.getBytes());
return Hex.encodeHexString(encrypted);
}

我在主程序中使用了这个方法。

public static void main(String[] args) throws Exception{
Encrytion enc = new Encrytion(); //my class name has a typo :(
enc.encrypt("abcde", "abcdfg");
System.out.println(enc);

}

我的结果是

com.dsmentoring.kmi.Encrytion@34340fab

只是我的包名+类名+和一些数字(我猜这是对实际数据的引用地址?)

我想像这样查看我的加密结果,如“a13efx34123fdv......”。我需要在我的主要方法中添加什么?有什么建议吗?

最佳答案

您正在打印 Encryption 对象而不是函数调用的结果。您可以这样做:

public static void main(String[] args) throws Exception{
Encrytion enc = new Encrytion(); //my class name has a typo :(
String result = enc.encrypt("abcde", "abcdfg");
System.out.println(result);
}

关于java - 如何检查 Java 中的加密结果(SHA1PRNG 和 AES)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53476866/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com