测试通过:
package tsoffice; import java.security.Key; import java.security.NoSuchAlgorithmException; import javax.crypto.Cipher; import javax.crypto.NoSuchPaddingException; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; public final class TestDes { private static final String CHARSET = "utf-8"; private static final String ALGORITHM = "DES"; private static final String CIPHER_ALGORITHM = "DES/ECB/PKCS5Padding"; private static Cipher getCipher() throws NoSuchPaddingException, NoSuchAlgorithmException { return Cipher.getInstance(CIPHER_ALGORITHM); } public static byte[] encrypt(String content, String key) { try { Cipher cipher = getCipher(); cipher.init(Cipher.ENCRYPT_MODE, getSecretKey(key)); byte[] byteContent = content.getBytes(CHARSET); return cipher.doFinal(byteContent); } catch (Exception ex) { ex.printStackTrace(); } return null; } public static String decrypt(byte[] content, String key) { try { Cipher cipher = getCipher(); cipher.init(Cipher.DECRYPT_MODE, getSecretKey(key)); byte[] result = cipher.doFinal(content); return new String(result, CHARSET); } catch (Exception ex) { ex.printStackTrace(); } return null; } private static Key getSecretKey(final String password) { try { return new SecretKeySpec(password.getBytes(CHARSET), ALGORITHM); } catch (Exception e) { return null; } } public static void main(String[] args) { String content = "泰山Office"; String key = "quantum6"; System.out.println("content:" + content); byte[] s1 = encrypt(content, key); //输出为乱码,不必理会。 System.out.println("encrypted:" + new String(s1)); System.out.println("decrypted:" + decrypt(s1, key)); } }