java authcode 一个经典的PHP加密解密算法authcode
时间: 2024-02-01 09:03:13 浏览: 198
一个经典的PHP验证码
Java中也有类似的加密解密算法可以实现类似PHP的authcode功能。常见的加密解密算法有AES、DES、RSA等。
以AES算法为例,可以使用Java内置的javax.crypto库中的AES算法实现加密解密。
加密示例代码:
```
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class AESUtil {
//默认密钥
private static final String DEFAULT_SECRET_KEY = "1234567890abcdef";
/**
* AES加密
* @param content 待加密内容
* @param secretKey 密钥
* @return 加密后的内容
*/
public static String encrypt(String content, String secretKey) {
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes("UTF-8"), "AES");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
byte[] encrypted = cipher.doFinal(content.getBytes("UTF-8"));
return Base64.encodeBase64String(encrypted);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* AES加密,默认使用默认密钥
* @param content 待加密内容
* @return 加密后的内容
*/
public static String encrypt(String content) {
return encrypt(content, DEFAULT_SECRET_KEY);
}
}
```
解密示例代码:
```
import javax.crypto.Cipher;
import javax.crypto.spec.SecretKeySpec;
import org.apache.commons.codec.binary.Base64;
public class AESUtil {
//默认密钥
private static final String DEFAULT_SECRET_KEY = "1234567890abcdef";
/**
* AES解密
* @param content 待解密内容
* @param secretKey 密钥
* @return 解密后的内容
*/
public static String decrypt(String content, String secretKey) {
try {
Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
SecretKeySpec keySpec = new SecretKeySpec(secretKey.getBytes("UTF-8"), "AES");
cipher.init(Cipher.DECRYPT_MODE, keySpec);
byte[] decrypted = cipher.doFinal(Base64.decodeBase64(content));
return new String(decrypted, "UTF-8");
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* AES解密,默认使用默认密钥
* @param content 待解密内容
* @return 解密后的内容
*/
public static String decrypt(String content) {
return decrypt(content, DEFAULT_SECRET_KEY);
}
}
```
使用示例:
```
String content = "hello world";
String secretKey = "1234567890abcdef";
//加密
String encryptedContent = AESUtil.encrypt(content, secretKey);
System.out.println("加密后的内容:" + encryptedContent);
//解密
String decryptedContent = AESUtil.decrypt(encryptedContent, secretKey);
System.out.println("解密后的内容:" + decryptedContent);
```
输出:
```
加密后的内容:wK0MwIxt8GQ4JUQXHcJ5Og==
解密后的内容:hello world
```
需要注意的是,加密和解密需要使用相同的密钥才能得到正确的结果。因此在实际使用中,密钥需要进行安全保管,避免泄露。
阅读全文