2011-11-17 46 views
6

Có phương pháp gốc đơn giản chết trong Java để mã hóa/giải mã chuỗi bằng khóa không? Tôi không thực sự quan tâm loại mã hóa (AES, DES, vv ..), tôi chỉ quan tâm rằng nó bị ràng buộc bởi một khóa và không dễ dàng phá vỡ.Một dòng đơn giản, phương thức mã hóa/giải mã gốc trong Java

Lý tưởng nhất, tôi muốn nó trở thành một giải pháp một dòng như vậy:

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

Cảm ơn

+0

Bạn đã thậm chí đã cố gắng để google cho * AES java *? – Joao

+0

Tại sao có nguồn gốc ....? – gd1

+0

Tại sao một dòng ...? –

Trả lời

3

Không chắc bạn có thể làm điều đó trong một [legiable] one-liner, nhưng bạn có thể đạt được mã hóa đối xứng đơn giản tương đối dễ dàng - hãy nhìn vào ví dụ sau:

PrivateExample using DES

tôi đã sử dụng Bouncy Castle thư viện để hiệu quả tốt trong quá khứ.

+0

Tốt hơn để sử dụng AES. DES đã lỗi thời và chậm. – rossum

2

Nếu theo ý của bạn, không phụ thuộc vào thư viện nền tảng cụ thể, có thể jasypt có thể thú vị đối với bạn.

0

Có thể bạn nên thử sử dụng XOR đơn giản mã hóa

+1

Downvoter: Trên thực tế, XOR với một pad thời gian là mã hóa tốt nhất có thể (nếu bạn có một cách an toàn để giao tiếp/lưu trữ "pad"). –

+0

@HotLicks: câu trả lời có nói gì về OTP không? "XOR đơn giản" một mình cũng có nghĩa là thực hiện ROT13. –

+0

@TheTerribleSwiftTomato - Có thể, có thể không. –

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

} 
Các vấn đề liên quan