加密解密16进制用法:

  1.Base64 :  26个英文字母大小写+10个阿拉伯数字+“+ =”  一共64个;

  2.3DES:

      

public static byte[] encrypt(byte[] key,byte[] data){
SecretKey secretKey=new SecretKeySpec(key, "DESede");
try {
Cipher cipher=Cipher.getInstance("DESede");
cipher.init(Cipher.ENCRYPT_MODE, secretKey);
return cipher.doFinal(data);

} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
public static byte[]decrypt(byte[]key,byte[]data){
SecretKey secretKey=new SecretKeySpec(key, "DESede");
try {
Cipher cipher=Cipher.getInstance("DESede");
cipher.init(Cipher.DECRYPT_MODE, secretKey);
return cipher.doFinal(data);

} catch (NoSuchAlgorithmException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvalidKeyException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalBlockSizeException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (BadPaddingException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}

16进制转换:

public static String toHexString(byte[] data, String seperator){
StringBuilder sb = new StringBuilder(data.length * (2 + seperator.length()));

int pb = 0;
String pre = "";
while(pb < data.length){
byte b = data[pb++];

int h = ((0xF0 & b) >> 4);
int l = (0x0F & b);

sb.append(pre);
if(h < 10){
sb.append((char)(‘0‘ + h));
}else{
sb.append((char)(‘a‘ + h - 10));
}
if(l < 10){
sb.append((char)(‘0‘ + l));
}else{
sb.append((char)(‘a‘ + l - 10));
}
pre = seperator;

}

return sb.toString();
}

/**
* 将十六进制字符串表示的字节数据还原成字节数组
* @param text 被还原的字符串
* @return 还原之后的字节数组
*/
public static byte[] fromHexString(String text){
if(text == null)
return new byte[0];

byte[] result = new byte[text.length() / 2];

text = text.toLowerCase();
int pb = 0;
int ps = 0;
while(pb < result.length && ps < text.length()){
char ch = text.charAt(ps++);
char cl = text.charAt(ps++);

int a = 0;
int b = 0;
if(‘0‘ <= ch && ch <= ‘9‘){
a = ch - ‘0‘;
}else{
a = ch - ‘a‘ + 10;
}
if(‘0‘ <= cl && cl <= ‘9‘){
b = cl - ‘0‘;
}else{
b = cl - ‘a‘ + 10;
}

result[pb++] = (byte)((a << 4) + b);
}

return result;
}

     

时间: 2024-11-05 17:32:03

加密解密16进制用法:的相关文章

16进制可逆加密算法

16进制可逆操作类: public static class Hex16 { /// <summary> /// 作用:将字符串内容转化为16进制数据编码,其逆过程是Decode /// 参数说明: /// strEncode 需要转化的原始字符串 /// 转换的过程是直接把字符转换成Unicode字符,比如数字"3"-->0033,汉字"我"-->U+6211 /// 函数decode的过程是encode的逆过程. /// </sum

JS 16进制加密解密

http://www.zc520.cc/js/62.html <script type="text/javascript"> function JavaDe(){ var monyer = new Array(); var s = document.getElementById('code').value.split("\\"); for (i = 1; i < s.length; i++){ s[i] = s[i].replace('x', ''

加密解密基础问题:字节数组和(16进制)字符串的相互转换(转)

在加密时,一般加密算法和hash算法,它们操作的都是字节数组,对字节数组按照加密算法进行各种变换,运算,得到的结果也是字节数组.而我们一般是要求对字符串进行加密,所以就涉及到字符串String到 byte[] 的转换,这个很简单.同时在解密时,也涉及到字节数组byte[] 到 String 的转换.另外在对用户的密码进行hash加密之后,最终是要保存在数据库中,所以加密得到 byte[] 也要转换到 String. 1. String 到 byte[] 的转换很简单,因为String类有直接的函

安卓、IOS端AEC密钥加密 Java端密钥解密通用实现(16进制表现形式)

由于业务需求,需要实现在客户端对重要信息进行加密,在服务端进行解密.客户端包括IOS和安卓的 服务端位Java. 注意密钥 需要保持一致,可以自己定义 . 安卓端加密代码: ===================================================================================================================== import android.util.Base64; import java.io.Un

AES-128-ECB 16进制加密解密算法

import javax.crypto.Cipher; import javax.crypto.spec.SecretKeySpec; /** * AES加密解密算法 * 默认采用AES-128-ECB加密模式 */ public class AESUtils { private static final String SKEY = "uHNTivV09dQxLor9"; /** * 加密 * @param sSrc * @return * @throws Exception */ p

AES加密 16进制与二进制转换

import java.security.Key; import javax.crypto.Cipher; import javax.crypto.KeyGenerator; import javax.crypto.SecretKey; import javax.crypto.spec.SecretKeySpec; import org.apache.commons.codec.binary.Base64; /** * AES安全编码组件 */ public abstract class AES

java字符串MD5加密后再转16进制

话不多说上码 public static byte[] digest(String signStr) { MessageDigest md5Instance = null; try { md5Instance = MessageDigest.getInstance("MD5"); md5Instance.update(signStr.getBytes("utf-8")); } catch (NoSuchAlgorithmException e) { e.printS

md5加密--32位16进制小写

public class ttgameMd5 { public final static String MD5(String str) { char hexDigits[] = { // 用来将字节转换成 16 进制表示的字符 '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f' }; try { byte[] strTemp = str.getBytes(); MessageDigest m

JS实现—Base64编码解码,带16进制显示

代码如下: <!DOCTYPE html> <html> <head> <meta name="viewport" content="initial-scale=1.0, user-scalable=no" /> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <titl