Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将Ruby加密代码转换为Java_Java_Ruby_Security_Encryption_Openssl - Fatal编程技术网

将Ruby加密代码转换为Java

将Ruby加密代码转换为Java,java,ruby,security,encryption,openssl,Java,Ruby,Security,Encryption,Openssl,我有一个ruby中的遗留代码,它使用OpenSSL进行加密 然而,我想用Java翻译这个,我迷路了。 到目前为止,我最大的障碍是找出如何根据这段代码生成IV。 任何帮助都将不胜感激 def func_enc(数据、键) cipher=OpenSSL::cipher::cipher.new(“aes-256-cbc”) 加密 密码pkcs5_keyivgen(密钥) 密码更新(数据) 加密数据上的警告表明,当与AES一起使用时,不推荐使用的pkcs5_-keyivgen方法会产生一些非标准行为。首

我有一个ruby中的遗留代码,它使用OpenSSL进行加密
然而,我想用Java翻译这个,我迷路了。 到目前为止,我最大的障碍是找出如何根据这段代码生成IV。 任何帮助都将不胜感激

def func_enc(数据、键)
cipher=OpenSSL::cipher::cipher.new(“aes-256-cbc”)
加密
密码pkcs5_keyivgen(密钥)
密码更新(数据)
加密数据上的警告表明,当与AES一起使用时,不推荐使用的pkcs5_-keyivgen方法会产生一些非标准行为。首先,它使用PBKDF1,而不是PBKDF2


复制它的功能可能很困难,除非您确切知道自己在做什么,否则实施加密算法通常是不可取的——甚至专家也经常会弄错。

看看这个问题:有什么原因不能利用现有的加密库吗?它更好地重用现有的和经过良好测试的轮子。阅读文档:我已经阅读了文档,但没有提供“PBKDF2WithMD5和256AES CBC”(也许我的名字错了,应该是PBEWithMD5AndAES吗?)。此外,当ruby代码加密数据时,返回的唯一内容是密码文本。当我解密时,我如何从密钥中检索IV?有人能帮我吗?我真的被卡住了!
    SecretKeyFactory factory = SecretKeyFactory.getInstance("PBKDF2WithMD5And256AES-CBC");
    KeySpec spec = new PBEKeySpec("Password".toCharArray(), null, 2048, 256);
    SecretKey tmp = factory.generateSecret(spec);
    SecretKey secret = new SecretKeySpec(tmp.getEncoded(), "AES");
    Cipher cipher = Cipher.getInstance("AES/CBC/PKCS5Padding");
    cipher.init(Cipher.ENCRYPT_MODE, secret);
    AlgorithmParameters params = cipher.getParameters();
    byte[] iv = params.getParameterSpec(IvParameterSpec.class).getIV();
    java.security.NoSuchAlgorithmException: PBKDF2WithMD5And256AES-CBC SecretKeyFactory not available