मैं डेल्फी 7 में डेटा को एन्क्रिप्ट और पोस्ट है, जहां मैं mcrypt साथ यह decrypting हूँ (के माध्यम से एक PHP स्क्रिप्ट को भेजने के लिए दिसम्बर 3.0 पुस्तकालय (Delphi Encryption Compedium Part I) का उपयोग करने के कोशिश कर रहा हूँ रिजेंडेल 5656, ईसीबी मोड)।डेल्फी दिसम्बर पुस्तकालय (क्रिप्ट) एन्क्रिप्शन
डेल्फी हिस्सा:
uses Windows, DECUtil, Cipher, Cipher1;
function EncryptMsgData(MsgData, Key: string): string;
var RCipher: TCipher_Rijndael;
begin
RCipher:= TCipher_Rijndael.Create(KeyStr, nil);
RCipher.Mode:= cmECB;
Result:= RCipher.CodeString(MsgData, paEncode, fmtMIME64);
RCipher.Free;
end;
पीएचपी हिस्सा:
function decryptMsgContent($msgContent, $sKey) {
return mcrypt_decrypt(MCRYPT_RIJNDAEL_256, $sKey, base64_decode($msgContent), MCRYPT_MODE_ECB, mcrypt_create_iv(mcrypt_get_iv_size(MCRYPT_RIJNDAEL_256, MCRYPT_MODE_ECB), MCRYPT_RAND));
}
समस्या यह है कि PHP से डिक्रिप्शन काम नहीं करता है और उत्पादन, अस्पष्ट है वास्तविक डेटा से भिन्न।
बेशक, डेल्फी Key
और PHP $Key
वही 24 वर्ण स्ट्रिंग है।
अब मुझे पता है कि डीईसी 3.0 पुराना और पुराना है, और मैं एन्क्रिप्शन में एक विशेषज्ञ नहीं हूं और यह नहीं बता सकता कि कार्यान्वयन वास्तव में रिजेंडेल 256 है। शायद कोई मुझे बता सकता है कि यह कार्यान्वयन PHP के मैक्रिप्ट w/RIJNDAEL_256। शायद चाबियाँ अलग है, या ब्लॉक आकार है, लेकिन कोड से यह नहीं बता सकता है। मैं जानता हूँ कि ईसीबी मोड अनुशंसित नहीं है
और मैं जितनी जल्दी सीबीसी इस्तेमाल करेंगे के रूप में मैं ईसीबी काम कर पाने: यहाँ Cipher1.pas से एक अंश है:
const
{ don’t change this }
Rijndael_Blocks = 4;
Rijndael_Rounds = 14;
class procedure TCipher_Rijndael.GetContext(var ABufSize, AKeySize, AUserSize: Integer);
begin
ABufSize := Rijndael_Blocks * 4;
AKeySize := 32;
AUserSize := (Rijndael_Rounds + 1) * Rijndael_Blocks * SizeOf(Integer) * 2;
end;
साइड सवाल। सवाल यह है कि, क्या मुझे जेनरेटेड चतुर्थ को डेल्फी में PHP स्क्रिप्ट में भी प्रेषित करना है? या कुंजी को जानना पर्याप्त है, ईसीबी की तरह?
यह एक बहुत बेवकूफ सवाल हो सकता है। लेकिन डेल्फी का उपयोग करके आप अपने एन्क्रिप्टेड डेटा को डिक्रिप्ट कर सकते हैं? ओह, और इस प्रश्न का उत्तर मदद करता है: http://stackoverflow.com/q/8313992/41338 – RobS
आप mcrypt_create_iv() को कॉल करते हैं। डेल्फी में आपने किस चौथाई का उपयोग किया था? –
@ldsandon: टेलिएडर ईसीबी मोड का उपयोग कर रहा है। कोई चतुर्थ नहीं है। –