Rumah > Artikel > pembangunan bahagian belakang > java - 求帮忙把这个DES加密代码转换成PHP的.. 这是DES算法么 ..
<code>import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.io.IOException; import java.security.SecureRandom; public class PHPDESEncrypt { String key; public PHPDESEncrypt() { } public PHPDESEncrypt(String key) { this.key = key; } public byte[] desEncrypt(byte[] plainText) throws Exception { SecureRandom sr = new SecureRandom(); DESKeySpec dks = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, key, sr); byte data[] = plainText; byte encryptedData[] = cipher.doFinal(data); return encryptedData; } public byte[] desDecrypt(byte[] encryptText) throws Exception { SecureRandom sr = new SecureRandom(); DESKeySpec dks = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, key, sr); byte encryptedData[] = encryptText; byte decryptedData[] = cipher.doFinal(encryptedData); return decryptedData; } public String encrypt(String input) throws Exception { return base64Encode(desEncrypt(input.getBytes())).replaceAll("\\s*", ""); } public String decrypt(String input) throws Exception { byte[] result = base64Decode(input); return new String(desDecrypt(result)); } public String base64Encode(byte[] s) { if (s == null) return null; BASE64Encoder b = new sun.misc.BASE64Encoder(); return b.encode(s); } public byte[] base64Decode(String s) throws IOException { if (s == null) { return null; } BASE64Decoder decoder = new BASE64Decoder(); byte[] b = decoder.decodeBuffer(s); return b; } public static void main(String[] args) { try { PHPDESEncrypt d = new PHPDESEncrypt("12345678"); String p = d.encrypt("love"); System.out.println("密文:" + p); } catch (Exception e) { e.printStackTrace(); } } public String getKey() { return key; } public void setKey(String key) { this.key = key; } } </code>
<code>import sun.misc.BASE64Decoder; import sun.misc.BASE64Encoder; import javax.crypto.Cipher; import javax.crypto.SecretKey; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import java.io.IOException; import java.security.SecureRandom; public class PHPDESEncrypt { String key; public PHPDESEncrypt() { } public PHPDESEncrypt(String key) { this.key = key; } public byte[] desEncrypt(byte[] plainText) throws Exception { SecureRandom sr = new SecureRandom(); DESKeySpec dks = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.ENCRYPT_MODE, key, sr); byte data[] = plainText; byte encryptedData[] = cipher.doFinal(data); return encryptedData; } public byte[] desDecrypt(byte[] encryptText) throws Exception { SecureRandom sr = new SecureRandom(); DESKeySpec dks = new DESKeySpec(key.getBytes()); SecretKeyFactory keyFactory = SecretKeyFactory.getInstance("DES"); SecretKey key = keyFactory.generateSecret(dks); Cipher cipher = Cipher.getInstance("DES"); cipher.init(Cipher.DECRYPT_MODE, key, sr); byte encryptedData[] = encryptText; byte decryptedData[] = cipher.doFinal(encryptedData); return decryptedData; } public String encrypt(String input) throws Exception { return base64Encode(desEncrypt(input.getBytes())).replaceAll("\\s*", ""); } public String decrypt(String input) throws Exception { byte[] result = base64Decode(input); return new String(desDecrypt(result)); } public String base64Encode(byte[] s) { if (s == null) return null; BASE64Encoder b = new sun.misc.BASE64Encoder(); return b.encode(s); } public byte[] base64Decode(String s) throws IOException { if (s == null) { return null; } BASE64Decoder decoder = new BASE64Decoder(); byte[] b = decoder.decodeBuffer(s); return b; } public static void main(String[] args) { try { PHPDESEncrypt d = new PHPDESEncrypt("12345678"); String p = d.encrypt("love"); System.out.println("密文:" + p); } catch (Exception e) { e.printStackTrace(); } } public String getKey() { return key; } public void setKey(String key) { this.key = key; } } </code>
des加密有好几种。。不知道你这种是哪个。。。这里有两种,你可以对照一下php Des加密
这个……看你贴的代码是java
吧!你要用php
的DES
解密需要至少得需要知道加密key
和对应的加密模式例如是CBC
,CFB
,ECB
等!确认好之后,用楼上的给你的dome应该没问题的