cuốn sách gpt4 ai đã làm

1 个 block (16 字节)的 Java AES-128 加密返回 2 个 block (32 字节)作为输出

In lại Tác giả: Taklimakan Thời gian cập nhật: 2023-11-03 03:40:15 25 4
mua khóa gpt4 Nike

Tôi đang sử dụng đoạn mã sau để mã hóa AES-128 để mã hóa khối 16 byte, nhưng độ dài của giá trị được mã hóa cho 2 khối 32 byte. Tôi đã bỏ lỡ điều gì à?

    plainEnc = AES.encrypt("thisisapassword!");
    nhập java.security.*; nhập java.security.spec.InvalidKeySpecException; nhập javax.crypto.*; nhập lớp công khai AES { Chuỗi tĩnh cuối cùng riêng tư ALGO = "AES"; keyValue = byte mới[] { 'T', 'h', 'e', ​​​​'B', 'e', ​​​​'s', 't', 'S', 'e', ​​​​' c', 'r','e', 't', 'K', 'e', ​​​​'y' }; Mã hóa chuỗi tĩnh công khai(Dữ liệu chuỗi) ném Ngoại lệ { System.out.println("độ dài chuỗi: " + (Dữ liệu .getBytes()).length); //length = 16 Khóa khóa = generateKey(); Bộ mã hóa = Cipher.getInstance(ALGO); key); byte[] encVal = chiper.doFinal(Data.getBytes()); System.out.println("độ dài đầu ra: " + encVal.length); //length = 32 Chuỗi mã hóaValue = new BASE64Encode().encode (encVal); trả về Giá trị mã hóa } Giải mã chuỗi tĩnh công khai (Dữ liệu được mã hóa chuỗi) ném Ngoại lệ { Khóa khóa = generateKey(); chiper = Cipher.getInstance(ALGO); chiper.init(Cipher.DECRYPT_MODE, key); byte[] trang tríValue = new BASE64Decoding().decodeBuffer(encryptedData byte[] decValue = chiper.doFinal(decdedValue); Chuỗi mới (decValue); trả về decryptedValue } Khóa tĩnh riêng generateKey() ném Ngoại lệ { Key key = new SecretKeySpec(keyValue, ALGO);

câu trả lời hay nhất

Cipher.getInstance("AES") Trả về mật khẩu được đệm bằng PKCS #5. Phần đệm này được thêm vào trong mọi trường hợp - khi bản rõ đã là bội số của kích thước khối, toàn bộ khối đệm sẽ được thêm vào.

hiện hữu Mật mã.getInstance() Chỉ định rõ ràng ý định của bạn trong cuộc gọi để tránh dựa vào các giá trị mặc định và có thể gây nhầm lẫn:

Cipher.getInstance("AES/ECB/NoPadding");

Bạn cũng sẽ thấy rằng bạn đang sử dụng chế độ ECB, đây là một lựa chọn tồi trong hầu hết mọi tình huống.

Về mã hóa Java AES-128 của 1 khối (16 byte) trả về 2 khối (32 byte) làm đầu ra, chúng tôi đã tìm thấy một câu hỏi tương tự trên Stack Overflow: https://stackoverflow.com/questions/18440907/

25 4 0
Chứng chỉ ICP Bắc Kinh số 000000
Hợp tác quảng cáo: 1813099741@qq.com 6ren.com
Xem sitemap của VNExpress