-
java的AES算法转换为PHP问题15
import java.security.SecureRandom; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; public class AES { public static String encrypt(String content, String password) throws Exception { KeyGenerator kgen = KeyGenerator.getInstance("AES"); SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(password.getBytes()); kgen.init(128, secureRandom); SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); Cipher cipher = Cipher.getInstance("AES"); byte[] byteContent = content.getBytes("utf-8"); cipher.init(Cipher.ENCRYPT_MODE, key); byte[] result = cipher.doFinal(byteContent); StringBuffer sb = new StringBuffer(); for (int i = 0; i < result.length; i++) { String hex = Integer.toHexString(result[i] & 0xFF); if (hex.length() == 1) { hex = '0' + hex; } sb.append(hex.toUpperCase()); } return sb.toString(); } public static String decrypt(String content, String password) throws Exception { byte[] byteContent = new byte[content.length()/2]; for (int i = 0;i< content.length()/2; i++) { int high = Integer.parseInt(content.substring(i*2, i*2+1), 16); int low = Integer.parseInt(content.substring(i*2+1, i*2+2), 16); byteContent[i] = (byte) (high * 16 + low); } KeyGenerator kgen = KeyGenerator.getInstance("AES"); SecureRandom secureRandom = SecureRandom.getInstance("SHA1PRNG"); secureRandom.setSeed(password.getBytes()); kgen.init(128, secureRandom); SecretKey secretKey = kgen.generateKey(); byte[] enCodeFormat = secretKey.getEncoded(); SecretKeySpec key = new SecretKeySpec(enCodeFormat, "AES"); Cipher cipher = Cipher.getInstance("AES"); cipher.init(Cipher.DECRYPT_MODE, key); byte[] result = cipher.doFinal(byteContent); return new String(result); } }
因为公司原有业务需要现在我需要将这段代码转换为PHP,多谢,分包够2014年11月04日 10:01
目前还没有答案
相关推荐
本篇将深入探讨如何在PHP中实现与Java兼容的AES/ECB/PKCS7Padding加密方式,并将结果转化为16进制字符串。 AES(Advanced Encryption Standard),即高级加密标准,是一种广泛使用的对称加密算法。ECB(Electronic ...
在这个示例中,密钥首先是以字符串形式存在,然后通过`Hex.decodeHex()`方法将其从Hex编码转换回原始的字节数组,这是因为AES算法需要字节形式的密钥。如果密钥是经过Hex编码的,那么在使用之前必须进行解码。 接...
本篇将详细解释如何将PHP中的AES加密算法转换为Java版本。 首先,我们需要理解AES的工作原理。AES采用块加密方式,标准的块大小为128位(16字节)。它使用相同的密钥进行加密和解密,支持128、192和256位的密钥长度...
此外,为了与PHP兼容,Java代码中还使用了Base64编码来转换字节数组为字符串,便于在不同系统间传输。 ### 三、PHP中的DES实现 虽然给定的代码片段只涉及Java,但在PHP中实现DES也遵循类似的逻辑。PHP提供了`...
在本资源中,我们有一个采用AES算法的加密模块,它以VB(Visual Basic)语言编写,可以方便地集成到各种应用程序中,如编译成DLL后,可用于Web、ASP、PHP、Java、VB、VC、Excel、Word等多个平台。 AES加密算法基于...
Java实现AES/CBC/PKCS7Padding加解密的方法是指使用Java语言实现AES对称加密算法的加解密过程,其中包括了加密和解密两个步骤。AES是一种对称加密算法,使用同一个密钥进行加密和解密操作。 在Java中,AES加解密...
由于这个类设计为与Java和JavaScript互通,这意味着它可能采用了跨语言兼容的数据表示方式,比如JSON或Base64编码的字符串,以便在不同平台之间传递加密和解密的结果。 这个实现的一个关键优点是其兼容性。能够与...
加密过程通常是先将要发送的数据转换为JSON格式,然后使用AES加密方法对"body"字段进行加密,得到的密文再作为请求的一部分发送给服务器。服务器端接收到密文后,使用相同的密钥进行解密,还原出原始数据。 在Java...
- `hexToStr`:将十六进制字符串转换为二进制字符串,用于将Java字节码转换为PHP可以使用的格式。 - `addpadding` 和 `strippadding`:这两个方法用于实现PKCS7填充,确保数据长度符合AES块大小的要求。 在示例的...
密钥和初始化向量(IV)的处理与Java和PHP类似,都需要转换成字节序列。 在跨平台的实现中,关键在于保持一致性,包括密钥的生成、加密模式、填充方式以及IV的使用。文件`des.php`可能包含了PHP的实现代码,`des-...
正确做法是先将中文字符串转换为UTF-8字节序列,再进行加密,解密后回转为原始的字符串。 对于长字符串,`DES`的64位数据块限制意味着长字符串需要被拆分成多个64位的数据块进行处理。在实际操作中,通常会使用`...
AES加密的基本原理是通过一系列的替换、置换和混淆操作,将明文数据转化为密文,只有持有正确密钥的人才能解密恢复原始数据。这个过程包括了四个主要步骤:字节替代、行位移、列混淆和轮密钥加。AES支持128、192和...
在这个特定的场景中,我们关注的是一个名为"Cryptography"的封装单元,它专门为Delphi开发者提供了对AES、DES和MD5加密算法的支持。 **AES(Advanced Encryption Standard)**是目前最广泛使用的对称加密算法之一,...
例如,Java和C#通常以Base64编码输出加密结果,而PHP可能需要额外的转换步骤。在提供的"Java、C#与PHP的DES加密互通代码(测试通过).txt"文件中,应该包含了示例代码和测试用例,演示了如何在这些环境中正确地进行...
AES(Advanced Encryption Standard)是一种广泛使用的对称加密算法,它基于块密码,具有高安全性和高效性。在互联网应用中,AES加密常用于保护敏感数据,如用户密码、个人信息等,确保数据在传输过程中的安全性。 ...
这种情况下,通常会采用某种常见的加密算法,如AES(高级加密标准)或RSA(公钥加密算法)。 AES是一种对称加密算法,速度快,适合大量数据的加密。在PHP中,可以使用`openssl_encrypt`和`openssl_decrypt`函数进行...
常会要到加密算法AES(Advanced Encryption Standard),下面是Python和PHP的实现。Python需要安Crypto库(pip install pycrypto或访问)PHP需要安装mcrypt扩展说明加密模式采用AES/CBC/PKCS7Padding注意:加密后的字节...
这一步骤是将密钥规格转换为JCE(Java Cryptography Extension)可以处理的格式。 3. **初始化Cipher**:`Cipher`类是负责加解密的核心组件。通过`Cipher.getInstance(ALGORITHM_DES)`获取一个`Cipher`实例,这里的...
它通常涉及将明文字符串转换为密文,然后在接收方使用相应的密钥将其解密回原始格式。加密算法有多种,如对称加密(如DES, AES)和非对称加密(如RSA, ECC)。 2. **Delphi中的加密**:Delphi是一个基于Pascal语言...
DESPlus是一种基于传统数据加密标准(DES)的增强加密算法,它在DES的基础上增加了自定义的填充和编码方式,使得加密后的结果可以转化为可读的数字和字母组合,方便在某些场景下使用和理解。本PHP实现是针对网上常见...