gpt4 book ai didi

java - Java 中的加密和解密

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:38:25 28 4
gpt4 key购买 nike

我想将加密的密码存储在 Java 文件中。我看到了一个使用 javax.crypto 的解决方案,但问题是关键是动态生成的,它是随机的。

此密码将在运行时在 Java 程序中被获取和解密。鉴于我要将一个已经加密的密码存储在一个文件中——我想得到解密时的正确文本。

有没有办法告诉 javax.crypto 方法:

key = KeyGenerator.getInstance(algorithm).generateKey()

这可以用我自己根据某个私钥生成一次的 key 代替吗?

任何人都可以为我提供一些有关如何执行此操作的资源吗?

最佳答案

这是一个使用 javax.crypto 库和 apache commons 编解码器库在我寻找的 Base64 中进行编码和解码的解决方案:

import java.security.spec.KeySpec;
import javax.crypto.Cipher;
import javax.crypto.SecretKey;
import javax.crypto.SecretKeyFactory;
import javax.crypto.spec.DESedeKeySpec;
import org.apache.commons.codec.binary.Base64;

public class TrippleDes {

private static final String UNICODE_FORMAT = "UTF8";
public static final String DESEDE_ENCRYPTION_SCHEME = "DESede";
private KeySpec ks;
private SecretKeyFactory skf;
private Cipher cipher;
byte[] arrayBytes;
private String myEncryptionKey;
private String myEncryptionScheme;
SecretKey key;

public TrippleDes() throws Exception {
myEncryptionKey = "ThisIsSpartaThisIsSparta";
myEncryptionScheme = DESEDE_ENCRYPTION_SCHEME;
arrayBytes = myEncryptionKey.getBytes(UNICODE_FORMAT);
ks = new DESedeKeySpec(arrayBytes);
skf = SecretKeyFactory.getInstance(myEncryptionScheme);
cipher = Cipher.getInstance(myEncryptionScheme);
key = skf.generateSecret(ks);
}


public String encrypt(String unencryptedString) {
String encryptedString = null;
try {
cipher.init(Cipher.ENCRYPT_MODE, key);
byte[] plainText = unencryptedString.getBytes(UNICODE_FORMAT);
byte[] encryptedText = cipher.doFinal(plainText);
encryptedString = new String(Base64.encodeBase64(encryptedText));
} catch (Exception e) {
e.printStackTrace();
}
return encryptedString;
}


public String decrypt(String encryptedString) {
String decryptedText=null;
try {
cipher.init(Cipher.DECRYPT_MODE, key);
byte[] encryptedText = Base64.decodeBase64(encryptedString);
byte[] plainText = cipher.doFinal(encryptedText);
decryptedText= new String(plainText);
} catch (Exception e) {
e.printStackTrace();
}
return decryptedText;
}


public static void main(String args []) throws Exception
{
TrippleDes td= new TrippleDes();

String target="imparator";
String encrypted=td.encrypt(target);
String decrypted=td.decrypt(encrypted);

System.out.println("String To Encrypt: "+ target);
System.out.println("Encrypted String:" + encrypted);
System.out.println("Decrypted String:" + decrypted);

}

}

运行上面的程序结果如下:

String To Encrypt: imparator
Encrypted String:FdBNaYWfjpWN9eYghMpbRA==
Decrypted String:imparator

关于java - Java 中的加密和解密,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10303767/

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