添加链接
link管理
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

javax.crypto.Cipher类提供加密和解密功能,该类是JCE框架的核心。
ENCRYPT_MODE,加密数据
DECRYPT_MODE,解密数据
WRAP_MODE,将一个Key封装成字节,可以用来进行安全传输
UNWRAP_MODE,将前述已封装的密钥解开成java.security.Key对象

import javax.crypto.Cipher;
import javax.crypto.KeyGenerator;
import java.security.Key;
 * @author someone
 * @create 2017-10-10 9:44
public class CipherUtil {
    private String algorithm; // 算法,如DES
    private Key key; // 根据算法对应的密钥
    private String plainText; // 明文
    KeyGenerator keyGenerator;
    Cipher cipher;
    // 函数进行初始化
    CipherUtil(String alg, String msg) {
        algorithm = alg;
        plainText = msg;
    // 加密函数,将原文加密成密文
    public byte[] encrypt() {
        byte[] cipherText = null;
        try {
            // 生成Cipher对象
            cipher = Cipher.getInstance(algorithm);
            // 用密钥加密明文(plainText),生成密文(cipherText)
            cipher.init(Cipher.ENCRYPT_MODE, key); // 操作模式为加密(Cipher.ENCRYPT_MODE),key为密钥
            cipherText = cipher.doFinal(plainText.getBytes()); // 得到加密后的字节数组
            // String str = new String(cipherText);
        } catch (Exception e) {
            e.printStackTrace();
        return cipherText;
    // 获取密钥包装成byte[]类型的
    public byte[] getBinaryKey(Key k) {
        byte[] bk = null;
        try {
            bk = cipher.wrap(k);
        } catch (Exception ex) {
            ex.printStackTrace();
        return bk;
    // 解密函数,将密文解密回原文
    public String decrypt(byte[] cipherText, Key k) {
        byte[] sourceText = null;
        try {
            cipher.init(Cipher.DECRYPT_MODE, k); // 操作模式为解密,key为密钥
            sourceText = cipher.doFinal(cipherText);
        } catch (Exception e) {
            e.printStackTrace();
        return new String(sourceText);
    // 生成密钥
    public Key keyGenerator() {
        try {
            // 初始化密钥key
            keyGenerator = KeyGenerator.getInstance(algorithm);
            keyGenerator.init(56); // 选择DES算法,密钥长度必须为56位
            key = keyGenerator.generateKey(); // 生成密钥
        } catch (Exception ex) {
            ex.printStackTrace();
        return key;
    public static void main(String[] args) {
        String algorithm = "DES"; // 定义加密算法,可用 DES,DESede,Blowfish
        String message = "Hello morning. 这是待加密的信息"; // 生成个DES密钥
        Key key;
        CipherUtil cm = new CipherUtil(algorithm, message);
        key = cm.keyGenerator();
        byte[] msg = cm.encrypt();
        System.out.println("加密后的密文为:" + new String(msg));
        //System.out.println(cm.getBinaryKey(key));
        System.out.println("解密密文为:" + cm.decrypt(msg, key));

参考:http://www.cnblogs.com/langtianya/archive/2013/01/31/2883867.html

CIP-应用接入 本次内容是CIP集成平台其中的一部分,叫应用集成,为外部系统更快速的接入协同OA提供入口; 应用集成设计不仅仅考虑了为PC端提供接入,同时为M3统一提供外部系统接入的平台; 本次应用集成包括:用户绑定,外部消息集成,外部系统待办集成,应用登录集成,不包括H5应用包的制作上传等内容; vectorKey: 加密的向量,16位字符串 public String encrypt(String content, String slatKey, String vectorKey) throws Exception { Cipher cipher = Cip... 一、先看一个简单加密解密实现1.1 加密/*** content: 加密内容* slatKey: 加密的盐,16位字符串* vectorKey: 加密的向量,16位字符串*/public String encrypt(String content, String slatKey, String vectorKey) throwsException {Cipher cipher= Cipher.g... RSA加密技术: 这种加密算法的特点主要是密钥的变化,上文我们看到DES只有一个密钥。相当于只有一把钥匙,如果这把钥匙丢了,数据也就不安全了。RSA同时有两把钥匙,公钥与私钥。同时支持数字签名。数字签名的意义在于,对传输过来的数据进行校验。确保数据在传输工程中不被修改。 流程分析: 甲方构建密钥对儿,将公钥公布给乙方,将私钥保留。甲方使用私钥加密数据,然后用私钥对加密后的数据签名,发送给 1、ENCRYPT_MODE,整型值1,加密模式,用于Cipher的初始化。 2、DECRYPT_MODE,整型值2,解密模式,用于Cipher的初始化。 3、WRAP_MODE,整型值3,包装密钥模式,用于Cipher的初始化。 4、UNWRAP_MODE,整型值4,解包装密钥模式,用于Cipher的初始化。 5、PUBLIC_KEY,整型值1,解包装密钥模式下指定密钥类型为公钥。 6、PRIVATE_KEY,整型值2,解包装密钥模式下指定密钥类型为私钥。   JavaCipher类主要提供加密解密的功能,该类位于javax.crypto包下,声明为public class Cipher extends Object,它构成了Java Cryptographic Extension(JCE)框架的核心。使用Cipher类时,需构建Cipher对象,再调用Cipher的getInstance方法来实现。 package org.example; import javax.crypto.Cipher; import javax.crypto.SecretKeyFactory; import javax.crypto.spec.DESKeySpec; import javax.crypto.spec.IvParameterSpec; import java.security.Key; import java.... 正如CodeInChaos正确推测的那样,当使用Cipher.ENCRYPT_MODE创建AESCipher实例时,SecureRandom实例用于派生随机IV.但是,在解密模式下创建Cipher实例时,请将其作为参数提供.这个小小的无意义代码片段显示了一个例子.public static void main(String[] args) throws Exception {SecureRando... 在开发时,总要涉及到数据的加密解密,之前一直有些糊涂,最近看了 jce.jar的源码,来整理记录一下 JCA(Java Cryptography Architecture): Java密码体系结构 JCE(Java Cryptography Extension):它是一组包,提供用于加密、密钥生成和协商以及 Message Authentication Code(MAC)算法的框架和实现。它提供了对称、不对称、块和流密码的加密支持,并且还支持安全流