En Python
Cela refuse de chiffrer la donnée si elle n'est pas multiple de 64 bits, je suis passé en ECB-CTS par flemme, pas envie de gérer le bourrage
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
cipher = blowfish.Cipher(b'Tc5*2D_xs7B[6E?w')
data = b'MerchantID=BNP_DEMO_AXEPTA&MsgVer=2.0&TransID=1&RefNr=0000000AB123&Amount=2000&Currency=EUR&URLNotify=https://axepta.bnpparibas/&URLSuccess=https://axepta.bnpparibas/&URLFailure=https://group.bnpparibas&OrderDesc=Test:0000&MAC=529c65ce765e684d42a29ca255ad99ae40b78715abc8ee958bfdbafd2597d30a'
data_encrypted = b"".join(cipher.encrypt_ecb_cts(data))
data_decrypted = b"".join(cipher.decrypt_ecb_cts(data_encrypted))
data_encoded = base64.b64encode(data_encrypted)
data_encoded_hexa = data_encrypted.hex()
assert data == data_decrypted
hexa_data = '43ad07f58ff6a5f9ebbdd42e361d2c85ce4ad41fcd63c697c9ca59076fb5cb782237a2e862a97bb24d949911bb701d698dfed6901f1bcb92404f53b8f5336525167ac5b8a9b89c5fb88d79967366e99e59d95f3f3f0c37126a52495115e28f938e76748a5dc703f7ccbda6ccb4fc253b255c06e0df990fdd94f4313ec2b94142f9978adb9d1079a36a9dbb83e9638e3e58a124d532ece1b7bc175fa340bd0c73c33d4f78374420091e90735bb014a5163d86bfe38795decacf0358075a85c0fbf80c5535046e7f8df64d204c7a4755e07700d4d17c9ef0bdc6e8bbd9c377e3ee0493a0ad2d3a9a624d693d04fe0bdfb3ebb2ef5badb63291ab8d7ad29b4f19b2b0f87dbc0bdb38f282816fe694ac2d512ba741d76a830b2083232246763aa006062f649279b42783'
bin_data = bytes.fromhex(hexa_data)
data_decrypted = b"".join(cipher.decrypt_ecb_cts(bin_data))
assert data == data_decrypted |
data_encoded est base64
Q60H9Y/2pfnrvdQuNh0shc5K1B/NY8aXycpZB2+1y3giN6LoYql7sk2UmRG7cB1pjf7WkB8by5JAT1O49TNlJRZ6xbipuJxfuI15lnNm6Z5Z2V8/Pww3EmpSSVEV4o+TjnZ0il3HA/fMvabMtPwlOyVcBuDfmQ/dlPQxPsK5QUL5l4rbnRB5o2qdu4PpY44+WKEk1TLs4be8F1+jQL0Mc8M9T3g3RCAJHpBzW7AUpRY9hr/jh5Xeys8DWAdahcD7+AxVNQRuf432TSBMekdV4HcA1NF8nvC9xui72cN34+4Ek6CtLTqaYk1pPQT+C9+z67LvW622MpGrjXrSm08ZsrD4fbwL2zjygoFv5pSsLVErp0HXaoMLIE+wqrCIvbwCgyMi
data_encoded_hexa
43ad07f58ff6a5f9ebbdd42e361d2c85ce4ad41fcd63c697c9ca59076fb5cb782237a2e862a97bb24d949911bb701d698dfed6901f1bcb92404f53b8f5336525167ac5b8a9b89c5fb88d79967366e99e59d95f3f3f0c37126a52495115e28f938e76748a5dc703f7ccbda6ccb4fc253b255c06e0df990fdd94f4313ec2b94142f9978adb9d1079a36a9dbb83e9638e3e58a124d532ece1b7bc175fa340bd0c73c33d4f78374420091e90735bb014a5163d86bfe38795decacf0358075a85c0fbf80c5535046e7f8df64d204c7a4755e07700d4d17c9ef0bdc6e8bbd9c377e3ee0493a0ad2d3a9a624d693d04fe0bdfb3ebb2ef5badb63291ab8d7ad29b4f19b2b0f87dbc0bdb38f282816fe694ac2d512ba741d76a830b204fb0aab088bdbc02832322
C'est proche de ton hexa mais la fin est différente, c'est à cause du Block à 64bits probablement, il y a un bourrage dans la version en ligne tout à fait visible
Electronic Codebook Mode with Cipher Text Stealing (ECB-CTS) depuis l'hexa, la fin est incorrecte
b'MerchantID=BNP_DEMO_AXEPTA&MsgVer=2.0&TransID=1&RefNr=0000000AB123&Amount=2000&Currency=EUR&URLNotify=https://axepta.bnpparibas/&URLSuccess=https://axepta.bnpparibas/&URLFailure=https://group.bnpparibas&OrderDesc=Test:0000&MAC=529c65ce765e684d42a29ca255ad99ae40b78715abc8ee958bfdbafd2597d\xbc\xb1\x9a\x1ax\xda\x93E'
Electronic Codebook Mode (ECB), depuis l'hexa, la fin est paddée avec de ASCII 0x05 (End of Line)
b'MerchantID=BNP_DEMO_AXEPTA&MsgVer=2.0&TransID=1&RefNr=0000000AB123&Amount=2000&Currency=EUR&URLNotify=https://axepta.bnpparibas/&URLSuccess=https://axepta.bnpparibas/&URLFailure=https://group.bnpparibas&OrderDesc=Test:0000&MAC=529c65ce765e684d42a29ca255ad99ae40b78715abc8ee958bfdbafd2597d30a\x05\x05\x05\x05\x05'
Partager