2012-04-13 33 views

Trả lời

6

API là để tạo chữ ký, hàm băm SHA1 (như bạn có thể thấy trong mã bạn liên kết đến). Mục đích của điều đó là không thể đảo ngược (chưa ký) nhưng được sử dụng như xác minh tính xác thực.

Ví dụ: nếu bạn đã ký mã xác thực, bạn có thể đảm bảo rằng mã đó không bị làm giả mạo bằng cách kiểm tra xem Crypto.sign(token) == tokenSignature.

Nếu bạn muốn mã hóa và giải mã, hãy xem Crypto.encryptAES/Crypto.decryptAES (được thêm trong Play 2.1).

+1

những gì lợi ích của nó, chúng tôi cũng có thể kiểm tra bằng 'myString = password' –

+0

Điểm tốt. Tôi đã chỉnh sửa câu trả lời để hiển thị một ví dụ tốt hơn. –

+1

Xin lưu ý rằng Crypto.encryptAES dễ bị tấn công tính dễ bị tấn công trừ khi nó được kết hợp với MAC để xác thực, bởi vì nó sử dụng AES-CTR. Những gì bạn có thể muốn là AES-GCM. 'Crypto' sẽ không được dùng nữa trong phiên bản 2.5.x và có hướng dẫn di chuyển để di chuyển nó: https://www.playframework.com/documentation/2.5.x/CryptoMigration25 –

1

Chính xác thì bạn đang cố gắng làm gì? Bạn chỉ ký một giá trị để đảm bảo rằng nó không bị thay đổi. Vấn đề là bạn không thể "unsign" nó một cách dễ dàng.

Nếu bạn muốn mã hóa và giải mã một giá trị trong ứng dụng của mình, bạn phải sử dụng thuật toán mã hóa từ javax.crypto.

+0

Cảm ơn thời gian của bạn, tôi muốn giải mã một tên người dùng và mật khẩu, và trong Play! 1.2.4 Tôi đã sử dụng lớp Crypto cho nó .. Và sau đó tại thời điểm yêu cầu tôi muốn hiển thị tên người dùng và mật khẩu, vì vậy tôi cần phải giải mã nó một lần nữa. Nhưng tôi hiểu rằng tôi cần phải sử dụng các lớp bổ sung cho mục đích này ... – adis

1

Nếu bạn cần chức năng mã hóa/giải mã, bạn có thể thử thêm http://www.jasypt.org/.

org.jasypt.util.text.BasicTextEncryptor cho phép người dùng mã hóa và giải mã dữ liệu văn bản bằng thuật toán cường độ thông thường. Để có thể mã hóa và giải mã.

hơn bạn có thể làm một cái gì đó như thế này:

... 
BasicTextEncryptor textEncryptor = new BasicTextEncryptor(); 
textEncryptor.setPassword(myEncryptionPassword); 
... 
String myEncryptedText = textEncryptor.encrypt(myText); 
String plainText = textEncryptor.decrypt(myEncryptedText); 
... 
+0

Có, thực sự tôi đã xem qua một :-). Và tôi sẽ cố gắng sử dụng nó trong dự án của tôi, cảm ơn dù sao để chia sẻ. – adis

+0

Tôi sẽ không sử dụng jasypt, bởi vì nó phát minh ra mật mã của riêng mình: http://security.stackexchange.com/a/65240 –

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