2011-11-17 101 views
6

Java中是否存在一種使用密鑰加密/解密字符串的簡單的本機方法?我並不在乎什麼類型的加密(AES,DES等),我只是在意它被一個密鑰綁定而不易破壞。簡單的一行,Java中的本地加密/解密方法

理想情況下,我想它是像這樣一個在線解決方案:

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

感謝

+0

你有甚至試圖谷歌* java的AES *? – Joao

+0

爲什麼是本地的....? – gd1

+0

爲什麼一條線......? –

回答

3

不知道你可以在[legiable]一個俏皮話做到這一點,但你可以相對容易地實現簡單的對稱加密 - 看看下面的例子:

PrivateExample using DES

我使用Bouncy Castle庫在過去良好的效果。

+0

更好使用AES。 DES已經過時了,速度很慢。 – rossum

2

如果你的本意是你的意思,不依賴於特定於平臺的庫,可能jasypt可能對你很有意思。

0

可能是你應該嘗試使用簡單的XOR加密

+1

Downvoter:實際上,使用一次性鍵盤進行XOR是最好的加密方式(如果您有安全的方式來溝通/存儲「鍵盤」)。 –

+0

@HotLicks:答案是否與OTP有關?單獨的「簡單異或」也可能意味着ROT13的實現。 –

+0

@TheTerribleSwiftTomato - 也許,也許不是。 –

-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); 
    } 

}