开发者社区> jouypub> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

DES加密解密

简介: 需要注意的是Java中的DESKeySpec类,其规定了秘钥的长度只能是8个字节,大于8字节则只取前8个字节。而且Java里DES加密采用的是默认模式:ECB模式,采用PKCS5Padding填充模式。
+关注继续查看

需要注意的是Java中的DESKeySpec类,其规定了秘钥的长度只能是8个字节,大于8字节则只取前8个字节。而且Java里DES加密采用的是默认模式:ECB模式,采用PKCS5Padding填充模式。故没有初始化向量(如果是其他模式,需要加上初始化向量)

Java DES加密解密,加密后再使用base64格式存储

public static String encrypt(String str) {
    String KEY = "12345678";
    SecureRandom random = new SecureRandom();
    DESKeySpec keySpec = new DESKeySpec(KEY.getBytes());
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
    SecretKey secretKey = keyFactory.generateSecret(keySpec);

    Cipher cipher = Cipher.getInstance(DES);
    cipher.init(Cipher.ENCRYPT_MODE, secretKey, random);
    byte[] cipherData = cipher.doFinal(str.getBytes());

    return new BASE64Encoder().encode(cipherData);
}

public static String decrypt(String str) {
    String KEY = "12345678";
    SecureRandom random = new SecureRandom();
    DESKeySpec keySpec = new DESKeySpec(KEY.getBytes());
    SecretKeyFactory keyFactory = SecretKeyFactory.getInstance(DES);
    SecretKey secretKey = keyFactory.generateSecret(keySpec);

    Cipher cipher = Cipher.getInstance(DES);
    cipher.init(Cipher.DECRYPT_MODE, secretKey, random);
    byte[] plainData = cipher.doFinal(new BASE64Decoder().decodeBuffer(str));

    return new String(plainData);
}

Python DES 加密解密,加密模式和Java保持一致,ECB模式,填充模式为PAD_PKCS5

# -*- coding:UTF-8 -*-
import base64
import sys
from pyDes import des, PAD_PKCS5, ECB

reload(sys)
sys.setdefaultencoding('utf8')

secret_key = '12345678'

def des_encrypt(s):
    k = des(secret_key, ECB, secret_key, pad=None, padmode=PAD_PKCS5)
    en = k.encrypt(s, padmode=PAD_PKCS5)
    return base64.encodestring(en)


def des_decrypt(s):
    k = des(secret_key, ECB, secret_key, pad=None, padmode=PAD_PKCS5)
    de = k.decrypt(data=base64.decodestring(s), padmode=PAD_PKCS5)
    return de


if __name__ == '__main__':
    str_en = des_encrypt('xx')
    print(str_en)
    str_de = des_decrypt(str_en)
    print(str_de)

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
C#DES加密解密
    关于DES加密解密由于项目中用到了,主要用在了对登录的用户名进行加密解密。一个程序某些关键信息肯定是要有安全性要求的,这个时候其实就需要加密和解密的过程,保障起安全性。    DES,全称Data Encryption Standard,是一种对称加密算法。
827 0
浅谈DES加密算法
一、DES加密算法介绍 1、要求密钥必须是8个字节,即64bit长度 2、因为密钥是byte[8] , 代表字符串也可以是非可见的字节,可以与Base64编码算法一起使用 3、加密、解密都需要通过字节数组作为数据和密钥进行处理   二、对称加密 DES加密算法属于对称加密。
637 0
C#实现RSA加密和解密详解
原文:C#实现RSA加密和解密详解 RSA加密解密源码: using System; using System.Collections.Generic; using System.Linq; using System.
1048 0
DES加密算法
一、DES算法    美国国家标准局1973年开始研究除国防部外的其它部门的计算机系统的数据加密标准,于1973年5月15日和1974年8月27日先后两次向公众发出了征求加密算法的公告。加密算法要达到的目的(通常称为DES 密码算法要求)主要为以下四点: 提供高质量的数据保护,防止数据未经授权的泄露和未被察觉的修改;  具有相当高的复杂性,使得破译的开销超过可能获得的利益
1238 0
加密解密-DES算法和RSA算法
昨天忽然对加密解密有了兴趣,今天上班查找了一些资料,现在就整理一下吧:) 一.DES算法 这种算法如图所示,这里将描述它的每一个步骤。这个算法进行了16次迭代(圈),把各块明文交织起来与 从密钥中获得的值混合。
617 0
+关注
jouypub
聊聊区块链、大数据库、应用开发、编程语言等等
文章
问答
文章排行榜
最热
最新
相关电子书
更多
低代码开发师(初级)实战教程
立即下载
阿里巴巴DevOps 最佳实践手册
立即下载
冬季实战营第三期:MySQL数据库进阶实战
立即下载