में डिक्रिप्ट करने की आवश्यकता है हमारे आवेदन में हमें बाहरी सर्वर से एन्क्रिप्टेड टेक्स्ट मिल रहा है। इस पाठ को PHP में openssl
का उपयोग करके एन्क्रिप्ट किया गया है। कोड cipher.padding = 0
के लिए निम्न पंक्ति जोड़ने के लिएPHP में एन्क्रिप्टेड ओपनेंस को रूबी
OpenSSL::Cipher::CipherError: wrong final block length
मैं Stackoverflow पर समाधान की जोड़ी पढ़ सकते हैं और था सलाह देते हैं:
जब मैं अपने रूबी कोड में पाठ डिक्रिप्ट करने के लिए कोशिश कर रहा हूँ, मैं निम्न त्रुटि संदेश मिल रहा है। लेकिन padding = 0
जोड़ने के बाद, मैं अलग त्रुटि हो रही है:
OpenSSL::Cipher::CipherError: data not multiple of block length
नीचे मेरी किसी न किसी स्क्रिप्ट मैं कोड डिक्रिप्ट करने के लिए लिखा है है।
require 'openssl'
require 'digest/sha1'
require 'base64'
encrypted = "VaZYJzn9QVEQIH4fmtA1Cg=="
key = "my_secret_key"
cipher = OpenSSL::Cipher::Cipher.new("aes-128-ecb")
cipher.decrypt
cipher.padding = 0
cipher.key = key
decrypted = cipher.update(encrypted)
decrypted << cipher.final
puts Base64.decode64(decrypted)
अगर मैं Ruby
का उपयोग करके पाठ एन्क्रिप्ट तो मैं आसानी से इसे डिक्रिप्ट कर सकते हैं। मुझे php
में एन्क्रिप्ट किए गए कोड को डिक्रिप्ट करने में समस्या हो रही है। क्या कोई तरीका है कि मैं PHP और रूबी के बीच एन्क्रिप्शन और डिक्रिप्शन संगत कर सकता हूं।
क्या आप सुनिश्चित हैं कि PHP सिफरटेक्स्ट उसी पैरामीटर के साथ जेनरेट किया गया था जिसका आप उपयोग कर रहे हैं? यानी ईसीई मोड में 128-बिट ब्लॉक लंबाई के साथ एईएस? – helmbert
मुझे रूबी बिल्कुल नहीं पता, लेकिन ऐसा लगता है कि आप पहले की बजाय डिक्रिप्ट करने के बाद बेस 64 डीकोडिंग कर रहे हैं। – Mike
@helmbert हाँ मुझे पूरा यकीन है कि PHP कोड ईसीबी मोड में 128 बिट ब्लॉक लंबाई का उपयोग कर रहा है। – Reboot