1 回答

TA貢獻1802條經驗 獲得超4個贊
您正在{ (byte)'p', (byte)'e', (byte)'a', (byte)'n', (byte)'u', (byte)'t', (byte)'s', (byte)'\r', (byte)'\n' }使用 C# 和{ (byte)'p', (byte)'e', (byte)'a', (byte)'n', (byte)'u', (byte)'t', (byte)'s' }Java 進行加密。
由于“peanuts”是(在 UTF-8 中)7 個字節,它可以被 PKCS7 填充到一個 DES 塊中。接下來的 1-8 個字節導致第二個塊......你添加了兩個。
將 Dot.Net Fiddle 中的代碼更改為Write而不是WriteLine生成
Algorithm: DES?/CBC/PKCS7
BlockSize: 64
barray length: 8
barray: 45 100 170 103 9 249 237 180
barray: LWSqZwn57bQ=
現在唯一的區別是 C# BlockSize 是位,而您的 Java 代碼將它作為字節。
"peanuts"在你的"peanuts\r\n"JDoodle 中改為
Algorithm: DES/CBC/PKCS7Padding
BlockSize: 8
barray length: 16
barray: 107 125 91 -51 77 -50 98 120 -42 -62 64 -89 -128 97 -124 75
barray: a31bzU3OYnjWwkCngGGESw==
這是相同的,如果barray小數內容被打印為無符號值而不是有符號值(將 256 添加到所有負數)——在 Base64 中很容易看出這一事實是相同的。
添加回答
舉報