zoukankan      html  css  js  c++  java
  • java中的数据加密2 对称加密

    对称加密

      也叫私钥加密。 

        采用单钥密码系统的加密方法,同一个密钥可以同时用作信息的加密和解密,这种加密方法称为对称加密,也称为单密钥加密。

      需要对加密和解密使用相同密钥的加密算法。由于其速度快,对称性加密通常在消息发送方需要加密大量数据时使用。对称性加密也称为密钥加密。

      所谓对称,就是采用这种加密方法的双方使用方式用同样的密钥进行加密和解密。密钥是控制加密及解密过程的指令。算法是一组规则,规定如何进行加密和解密。

      因此加密的安全性不仅取决于加密算法本身,密钥管理的安全性更是重要。因为加密和解密都使用同一个密钥,如何把密钥安全地传递到解密者手上就成了必须要解决的问题。

      常用的对称加密有:DES、IDEA、RC2、RC4、SKIPJACK、RC5、AES算法等

          比如:A用一个密钥对一个文件加密,而B读取这个文件的话,则需要和A一样的密钥,双方共享一个私钥(而在web环境下,私钥在传递时容易被侦听):
    使用私钥加密的话,首先需要一个密钥,可用javax.crypto.KeyGenerator产生一个密钥(java.security.Key),然后传递给一个加密工具(javax.crypto.Cipher),该工具再使用相应的算法来进行加密

    import javax.crypto.Cipher;
    import javax.crypto.KeyGenerator;
    import java.security.Key;
    
    public class PrivateTest {
        public static void main(String[] args) throws Exception {
            byte[] plainText = "test encryption".getBytes("UTF8");
            // 通过KeyGenerator形成一个key
            KeyGenerator keyGen = KeyGenerator.getInstance("AES");
            keyGen.init(128);
            Key key = keyGen.generateKey();
            // 获得一个私鈅加密类Cipher,ECB是加密方式,PKCS5Padding是填充方法
            Cipher cipher = Cipher.getInstance("AES/ECB/PKCS5Padding");
            System.out.println(" " + cipher.getProvider().getInfo());
            // 使用私鈅加密
            cipher.init(Cipher.ENCRYPT_MODE, key);
            byte[] cipherText = cipher.doFinal(plainText);
            System.out.println(new String(cipherText, "UTF8"));
            cipher.init(Cipher.DECRYPT_MODE, key);
            byte[] newPlainText = cipher.doFinal(cipherText);
            System.out.println(new String(newPlainText, "UTF8"));
        }
    }
  • 相关阅读:
    《超越自己》--刘墉
    《菊与刀》--[美]鲁思·本尼迪克特(Ruth Benedict)
    《暧昧的日本人》--李兆忠
    《女性的选择》--[日]今野由梨
    《懂得低头,才能出头》--李艳
    原来还有这样的记词方法_Java版记不规则动词_博主推荐
    《永不止步》--[奥]力克胡哲
    C#面向服务WebService从入门到精通
    C# Windows服务开发从入门到精通
    sql server递归查询
  • 原文地址:https://www.cnblogs.com/happyPawpaw/p/3740672.html
Copyright © 2011-2022 走看看