啊,遗留应用程序的乐趣。
我正在将旧的Kohana 3 PHP应用程序迁移到Ruby / Rails。一个字段已存储在数据库中,使用Kohana的“加密”模块进行了交换。 http://kohanaframework.org/3.0/guide/api/Kohana_Encrypt
在迁移数据时,我需要解密这些值,然后使用其他内容重新加密它们。
然而,我的Mcrypt知识是零,我似乎无法解密。
我所知道的:
有关如何解密此数据的任何想法?我是否拥有我需要的所有信息?我有点失落......
提前致谢。
答案 0 :(得分:1)
我的诀窍是使用PHP的“mcrypt_get_iv_size”为我的密码和模式确定IV大小。其次是将Mcrypt宝石中的模式从cfb翻转到nofb(Kohana设置中使用的模式)
移植了Koahana解密方法,它就像一个魅力。
data = Base64.strict_decode64(data)
throw "INVALID DATA" if data.empty?
# Extract the initialization vector from the data
iv = data.slice(0, iv_size)
throw "IV IS NOT THE EXPECTED SIZE" if iv.size != iv_size
# Remove the iv from the data
data = data [16..(data.size)]
puts Mcrypt.new(cipher, :nofb, key, iv).decrypt(data)
答案 1 :(得分:0)
如果我是你,我会在Kohana应用程序的数据库中创建一个新字段,然后创建一个利用Kohana解密函数解密该值并将其存储在新字段中的脚本。
将数据库移植到ruby并创建脚本以将这些值加密回您希望在Ruby中加密它们的方式。然后删除新字段。
这将使迁移变得更加痛苦。