简单的一行,Java中的本机加密/解密方法

时间:2011-11-17 23:07:38

标签: java encryption

Java中是否有一个死简单的本机方法用密钥加密/解密字符串?我真的不在乎什么类型的加密(AES,DES等),我只是关心它受一个键的约束而且不容易破解。

理想情况下,我希望它是一个像这样的单行解决方案:

String encryptedString = NativeEncryptionClass.encrypt("this is the data", "key123");

由于

5 个答案:

答案 0 :(得分:3)

不确定是否可以在[合法的]单行中执行此操作,但您可以相对轻松地实现简单的对称加密 - 请查看以下示例:

PrivateExample using DES

过去我使用Bouncy Castle库效果很好。

答案 1 :(得分:2)

如果您原来的意思是,不依赖于特定于平台的库,那么jasypt可能会对您感兴趣。

答案 2 :(得分:1)

好吧,也许这不是'一条线'但似乎很容易:

使用java的Cipher类。看这里......(本页还有其他例子......)

http://download.oracle.com/javase/6/docs/technotes/guides/security/crypto/CryptoSpec.html#BlowKeyEx

答案 3 :(得分:1)

您可以尝试使用简单XOR 加密

答案 4 :(得分:-1)

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;

public class SimpleMD5Example {

    public static void main(String[] args) {
        String passwordToHash = "0";
        String generatedPassword = null;
        try {
            // Create MessageDigest instance for MD5
            MessageDigest md = MessageDigest.getInstance("MD5");
            // Add password bytes to digest
            md.update(passwordToHash.getBytes());
            // Get the hash's bytes
            byte[] bytes = md.digest();
            System.out.println(bytes);

            // This bytes[] has bytes in decimal format;
            // Convert it to hexadecimal format
            StringBuilder sb = new StringBuilder();
            for (int i = 0; i < bytes.length; i++) {
                sb.append(Integer.toString((bytes[i] & 0xff), 16).substring(1));

            }
            // Get complete hashed password in hex format
            generatedPassword = sb.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
        }
        System.out.println(generatedPassword);
    }

}