您好我想使用Java中的密钥加密唯一的随机值。我将这个独特的随机值发送到每个web服务,以使系统安全,这样任何人都无法在休息客户端上访问我的Web服务URL。
请指导我实现这一目标。
提前致谢。
答案 0 :(得分:1)
该问题有两种解决方案:
总之,第一个;你通过套接字加密数据(通过逆向工程,比如暴力破解,你可以破解用于加密的密码)。第二;使用SSL(安全套接字层)。我使用过第一个解决方案,然后我可以为您详细说明如何实现。你在这里:
1-有一些API可以帮助您实现这一目标。我前一段时间使用jasypt,我建议。但也有其他人;比如bouncy castle。
通常,它们很容易实现。在jasypt中,你可以解决这个问题,只需运行测试:
public class SecurityUtil {
private static String passEncrypt;
/*
* Get the message encrypted
* @param String string to encrypt
* @return encrypted message
*/
public static String Encryptor(String message){
SecurityUtil.testEncryptPassSet();
StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
encryptor.setPassword(SecurityUtil.passEncrypt);
String encryptedText = encryptor.encrypt(message);
return encryptedText;
}
/*
* Get the decrypt message
* @param encrypted message
* @return String decrypted message
*
*/
public static String Decryptor(String message) {
SecurityUtil.testEncryptPassSet();
StandardPBEStringEncryptor decryptor = new StandardPBEStringEncryptor();
decryptor.setPassword(SecurityUtil.passEncrypt);
String decryptedText = decryptor.decrypt(message);
return decryptedText;
}
/*
* set the encryption password
*/
public static void setPassEncrypt(String passEncrypt) {
SecurityUtil.passEncrypt = passEncrypt;
}
public static void testEncryptPassSet() {
if (SecurityUtil.passEncrypt == null){
System.out.println("Must set the password after");
}
}
public static void main (String[] args){
SecurityUtil.setPassEncrypt("Test"); //here you key
String encrypted;
System.out.println("Encrypted: "+(encrypted = SecurityUtil.Encryptor("This is a test message")));
System.out.println("Decryp: "+SecurityUtil.Decryptor(encrypted));
}
}
输出:
加密:eESU3c2IzRSl2VvHs4Otyh + Q3aBisiP6XPfyKpbXMdQ =
解密:这是一条测试消息
2-您可以研究如何在套接字here上实施SSL。此外,here是一些例子。 here我们在StackOverflow中有类似主题的问题。