有人要求我用PHP解密使用以下Java类加密的字符串。
public class CryptoLibrary {
private Cipher encryptCipher;
private sun.misc.BASE64Encoder encoder = new sun.misc.BASE64Encoder();
public CryptoLibrary() throws SecurityException{
java.security.Security.addProvider(new com.sun.crypto.provider.SunJCE());
char[] pass = "NNSHHETJKKSNKH".toCharArray();
byte[] salt = {
(byte) 0xa3, (byte) 0x21, (byte) 0x24, (byte) 0x2c,
(byte) 0xf2, (byte) 0xd2, (byte) 0x3e, (byte) 0x19 };
init(pass, salt, iterations);
}
public void init(char[] pass, byte[] salt, int iterations)throws SecurityException{
PBEParameterSpec ps = new javax.crypto.spec.PBEParameterSpec(salt, 20);
SecretKeyFactory kf = SecretKeyFactory.getInstance("PBEWithMD5AndDES");
SecretKey k = kf.generateSecret(new javax.crypto.spec.PBEKeySpec(pass));
encryptCipher = Cipher.getInstance("PBEWithMD5AndDES/CBC/PKCS5Padding");
encryptCipher.init(Cipher.ENCRYPT_MODE, k, ps);
}
}
public synchronized String encrypt(String str) throws SecurityException{
if(str!=null){
byte[] utf8 = str.getBytes("UTF8");
byte[] enc = encryptCipher.doFinal(utf8);
return encoder.encode(enc);
}
else {
return null;
}
}
}
我不懂Java,因此我需要一些帮助来理解这种加密。
1)这行是什么意思? PBEParameterSpec ps = new javax.crypto.spec.PBEParameterSpec(salt,20);
2)我应该为第一个参数使用什么值 string mcrypt_encrypt ( string $cipher , string $key , string $data , string $mode [, string $iv ] )
3)什么时候应该在我的php脚本中使用MD5?
1)它创建用于基于密码的加密的参数,哈希计算中包含的盐和哈希算法执行的迭代次数(在其自身的输出中)。它用于击退彩虹表攻击,基本上,攻击者必须经过相同的迭代次数才能检查密码是否正确,并且他不能使用预先计算的表,因为每个密码的盐值都会不同(因此您看不到(如果某人的密码与另一用户的密码相同)。
2)MCRYPT_DES,您将需要MCRYPT_MODE_CBC作为模式,当然也需要PKCS#5填充。
3)仅当您完全确定其弱点没有暴露或绝对需要兼容性时。幸运的是,它对于密钥派生功能相对安全。下载用于PHP的pbkdf1方法并将其放在其中-如果尚未包含的话。
为什么PHP解密方法不能解密用Java加密的数据? 当我仅使用Java或仅在PHP中加密和解密数据时,一切工作都很好。 加密的数据被发送到服务器,在那里我尝试用PHP openssl_decrypt对其进行解密 不幸的是,openssl_decrypt返回一个空字符串。
问题内容: 我想使用公共密钥加密技术在JavaScript中加密,在PHP中解密。我一直在尝试找到可以完成此任务的库,但是遇到了问题。 我目前正在使用 openpgpjs ,但是我需要所有浏览器的支持,甚至测试页在唯一列为受支持的浏览器(Google Chrome)上都有错误。 关于最终目标的注意事项: TCP连接已受SSL保护。 此保护层的主要目的是防御有意或无意的Web服务器日志记录,崩溃转储
问题内容: 我找到了在PHP中对字符串进行编码/解码的示例。起初它看起来非常好,但是不会起作用:-( 有人知道问题出在哪里吗? 结果是: 加密: 解密: 问题答案: 并且 在您的代码中未定义。查看有效的解决方案( 但不安全! ): 停! 这个例子是 不安全的! 不要使用它! **但是此代码中还有其他问题,使其变得不安全,尤其是使用ECB(这不是_加密_模式,只能在其上定义加密模式的构造块)。
这是可能的还是加密必须共享和使用相同的密钥? 主要目的就是这样。 我将有两个客户端可以发送和接收加密数据到彼此。
问题内容: 有没有一种方法可以解密Java中的密码。Java将算法实现为。我得到了创建密码哈希的代码。我在下面提到了哈希技术的链接: http://howtodoinjava.com/security/how-to-generate-secure-password-hash- md5-sha-pbkdf2-bcrypt-examples/ 我的要求是以加密格式存储第三方FTP服务器密码,并在需要登
我遇到的情况是,JSON在PHP的中加密,需要在JAVA中解密。 此包含正确的数据,现在已解密。 现在,问题是当我试图做同样的事情在Java它不起作用:( 这是: 我已经访问了类似的问题,如 AES-256 CBC用php加密,用Java解密,反之亦然 openssl_在java中加密256个CBC原始_数据 无法在Java和PHP之间交换使用AES-256加密的数据 名单还在继续。。。。但是运气