Tôi đã tìm kiếm một ví dụ mã Java để làm như sau nhưng đã không thành công. Tôi đang tìm một giải pháp cho tình huống cụ thể của tôi.Sử dụng Java để giải mã openssl aes-256-cbc bằng cách sử dụng khóa được cung cấp và iv
Một khóa và IV đã được tạo ra sử dụng "testtest" cho một mật khẩu:
openssl enc -aes-256-cbc -P
salt=2855243412E30BD7
key=E4A38479A2349177EAE6038A018483318350E7F5430BDC8F82F1974715CB54E5
iv=629E2E1500B6BA687A385D410D5B08E3
Một tập tin (tên văn bản) đã được mã hóa trên Linux sử dụng lệnh openssl:
openssl enc -aes-256-cbc -K
E4A38479A2349177EAE6038A018483318350E7F5430BDC8F82F1974715CB54E5 -iv
629E2E1500B6BA687A385D410D5B08E3 -e -in text -out text_ENCRYPTED
Nó có thể được giải mã thành công bằng cách sử dụng:
openssl enc -aes-256-cbc -K
E4A38479A2349177EAE6038A018483318350E7F5430BDC8F82F1974715CB54E5 -iv
629E2E1500B6BA687A385D410D5B08E3 -d -in text_ENCRYPTED -out text_DECRYPTED
Tôi có quyền truy cập vào tệp được mã hóa, muối, khóa d iv. Tôi không tin tôi sẽ nhận được mật khẩu. Ngoài ra, tôi đã cài đặt chính sách JCE sức mạnh không giới hạn. Cho đến nay tôi chỉ tìm thấy các ví dụ trong đó một chương trình java khác thực hiện mã hóa và tạo ra các tham số này. Đối với trường hợp của tôi, tôi phải sử dụng các giá trị muối, khóa và iv cho tôi để giải mã một tập tin. Điều này có thể thực hiện được với Java không? Hãy nhớ rằng tôi bị ràng buộc bởi cấu hình này, cảm ơn bạn rất nhiều vì đã dành thời gian và giúp đỡ.
trình! Cảm ơn nhiều. – user2203629
Bạn được chào đón, đó là tin tuyệt vời. Bạn nên đánh dấu câu trả lời này là được chấp nhận sau đó để cho biết rằng nó đã giải quyết được vấn đề. – laz
Có một lỗi nhỏ trong decodeHex() trong câu trả lời. Khi giá trị được mã hóa bắt đầu bằng '00', các byte tương ứng sẽ biến mất. Hãy nghĩ đến việc sử dụng thư viện nổi tiếng như Apache Commons để giải mã hex. (Tôi đã tìm thấy một ví dụ tại http://stackoverflow.com/questions/13990941/how-to-convert-hex-string-to-java-string) – ways