什麼是“串列連接”?
我有一個第三方銷售點 API (Speedflow Pay-N-Get),我試圖通過 HTTP 與之通信,但我遇到了問題。
簡而言之,請求使用 RSA 加密,響應使用 RSA 加密,然後是 Rijndael/AES-128。RSA 密鑰由供應商提供,AES IV 是供應商提供的 guid,AES 密鑰是供應商提供的 guid 和使用“串列連接”組合而成的隨機請求者生成的 guid。隨機 guid 作為請求的參數包含在內。
我正在使用 OpenSSL 來處理加密/解密。
除了 AES 部分,我什麼都可以工作。我不知道“串列連接”是什麼,線上搜尋沒有找到任何有用的資訊,供應商也沒有回复。有誰知道這是什麼?
**更新:**以下是 API 文件關於加密的 AES 部分的說明:
伺服器響應 — HTTP 響應正文中的 EDATA 數據。
公式:EDATA = Base64 (Rj (RSA1 (DATA)))
Rj — 對稱算法 Rijandel-128
IV — Guid #1 值,轉換為字節數組
Key — 值 Guid #1 和 Guid #2(串列連接)
模式間距 - 零
還:
—–解密.—–
RSA(AES(BASE64(響應))),
其中 RSA - RSA- 私鑰加密
AES - 對稱密鑰加密
響應——伺服器響應
——AES—–
使用 bouncyCastle: cipher= PaddedBufferedBlockCipher (CBCBlockCipher (RijndaelEngine(128)), ZeroBytePadding());
cipher.init(假,ParametersWithIV(KeyParameter(mykey),iv));
其中 mykey- 十六進製字元串 guid3 編碼
iv- 十六進製字元串 guid3 中的串聯編碼和十六進製字元串 guid2 中的編碼
該算法通過將字元串的兩個字元轉換為十六進制並添加到字節數組來執行編碼。
Guid#1 是供應商提供的 Guid,Guid#2 是隨機生成的 Guid。兩者都包含在請求中。我懷疑第二段實際上意味著 IV 是 Guid3,關鍵是 Guid3 和 Guid2 的串聯。Guid3 只是 Guid1,它的前 3 個欄位轉換為大端。
由於 AES-128 密鑰的大小只有 16 個字節,而 Guid 的大小也是 16 個字節,我懷疑“串列連接”會以某種方式將它們散列在一起,而不是簡單地將它們相互附加,這會產生改為 32 字節密鑰。
“串列連接”不是密碼學中的標準術語。沒有任何進一步的資訊,我猜它可能只是指串聯。如果這不是它所指的,那麼您的規範是有缺陷和模棱兩可的;您需要諮詢規範的作者,要求澄清該片語的含義。