加密算法的应用以及出现的问题


信息资源:http://baijinshan.iteye.com/blog/716643,可以到该网站上找到相应的内容,而这篇博文则用一种比较容易理解的方式来解释加密的整个过程,http://blog.csdn.net/shimiso/article/details/8472319


加密技术

单项加密技术


  • BASE64 严格地说,属于编码格式,而非加密算法

  • MD5(Message Digest algorithm 5,信息摘要算法)

  • SHA(Secure Hash Algorithm,安全散列算法)

  • HMAC(Hash Message Authentication Code,散列消息鉴别码) 

复杂的对称加密(DES、PBE)、非对称加密算法:


  • DES(Data Encryption Standard,数据加密算法)

  • PBE(Password-based encryption,基于密码验证)

  • RSA(算法的名字以发明者的名字命名:Ron Rivest, AdiShamir 和Leonard Adleman)

  • DH(Diffie-Hellman算法,密钥一致协议)

  • DSA(Digital Signature Algorithm,数字签名)

  • ECC(Elliptic Curves Cryptography,椭圆曲线密码编码学)  


base64加密解密

甲方(1,对数据加密 2,发送加密数据) 乙方(3,对数据解密)

/**
     * BASE64解密
     *
     * @param key
     * @return
     * @throws Exception
     */
    public static byte[] decryptBASE64(String key) throws Exception {
        return (new BASE64Decoder()).decodeBuffer(key);
    }
 
    /**
     * BASE64加密
     *
     * @param key

MD5信息摘要算法    

甲方(1.公布信息摘要算法 2.对数据做信息摘要处理 3,发送原始数据,信息摘要) 乙方(4.对原始数据做摘要处理。5检验摘要信息是否一致)

/**
      * MD5加密
      *
      * @param data
      * @return
      * @throws Exception
      */
     public   static   byte [] encryptMD5( byte [] data)  throws   Exception {
         MessageDigest md5 = MessageDigest.getInstance(KEY_MD5);
         md5.update(data);
         return   md5.digest();

SHA(安全散列算法)

甲方(1.公布信息摘要算法 2.对数据做信息摘要处理 3,发送原始数据,信息摘要) 乙方(4.对原始数据做摘要处理。5检验摘要信息是否一致)

/**
      * SHA加密
      *
      * @param data
      * @return
      * @throws Exception
      */
     public   static   byte [] encryptSHA( byte [] data)  throws   Exception {
         MessageDigest sha = MessageDigest.getInstance(KEY_SHA);
         sha.update(data);
         return   sha.digest();
     }



public   static   final   String KEY_MAC =  "HmacMD5" ;
 
     /**
      * 初始化HMAC密钥
      *
      * @return
      * @throws Exception
      */
     public   static   String initMacKey()  throws   Exception {
         KeyGenerator keyGenerator = KeyGenerator.getInstance(KEY_MAC);
 
         SecretKey secretKey = keyGenerator.generateKey();
         return   encryptBASE64(secretKey.getEncoded());
     }
 
     /**
      * HMAC加密
      *
      * @param data
      * @param key
      * @return
      * @throws Exception
      */
     public   static   byte [] encryptHMAC( byte [] data, String key)  throws   Exception {
 
         SecretKey secretKey =  new   SecretKeySpec(decryptBASE64(key), KEY_MAC);
         Mac mac = Mac.getInstance(secretKey.getAlgorithm());
         mac.init(secretKey);
 
         return   mac.doFinal(data);
 
     }



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值