2016-01-18 9 views
5

में डिक्रिप्ट करने की आवश्यकता है हमारे आवेदन में हमें बाहरी सर्वर से एन्क्रिप्टेड टेक्स्ट मिल रहा है। इस पाठ को 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 और रूबी के बीच एन्क्रिप्शन और डिक्रिप्शन संगत कर सकता हूं।

+0

क्या आप सुनिश्चित हैं कि PHP सिफरटेक्स्ट उसी पैरामीटर के साथ जेनरेट किया गया था जिसका आप उपयोग कर रहे हैं? यानी ईसीई मोड में 128-बिट ब्लॉक लंबाई के साथ एईएस? – helmbert

+1

मुझे रूबी बिल्कुल नहीं पता, लेकिन ऐसा लगता है कि आप पहले की बजाय डिक्रिप्ट करने के बाद बेस 64 डीकोडिंग कर रहे हैं। – Mike

+0

@helmbert हाँ मुझे पूरा यकीन है कि PHP कोड ईसीबी मोड में 128 बिट ब्लॉक लंबाई का उपयोग कर रहा है। – Reboot

उत्तर

1

बस इसे जिस तरह से कॉल करें उसे बदलें।

decrypted << cipher.final से decrypted = cipher.update(encrypted) + cipher.final

की तरह

<GF\x8F\xDC\x91\xE1ew\xB1\x1C\xE8\xF8V\xA0\x99g\x01C\xCDF\xD6\v\x841l\x13\xA6\x9496{

अंतिम, रूबी डॉक्टर से बोली आप ईसीबी मोड का उपयोग कभी नहीं करना चाहिए जब तक आप पूरी तरह से सुनिश्चित कर रहे हैं स्ट्रिंग मिल सकता है कि आप पूरी तरह इसकी जरूरत

संबंधित मुद्दे