DES加密解密
需要注意的是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)

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
javascript基础修炼(3)—What's this(下)
开发者的javascript造诣取决于对【动态】和【异步】这两个词的理解水平。 这一期主要分析各种实际开发中各种复杂的this指向问题。 一. 严格模式 严格模式是ES5中添加的javascript的另一种运行模式,它可以禁止使用一些语法上不合理的部分,提高编译和运行速度,但语法要求也更为严格,使用use strict标记开启。 严格模式中this的默认指向不再为全局对象,而是默认指向undefined。这样限制的好处是在使用构造函数而忘记写new操作符时会报错,而不会把本来需要绑定在实例上的一堆属性全绑在window对象上,在许多没有正确地绑定this的场景中也会报错。 二. 函数和方法的嵌套与混用 词法定义并不影响this的指向 , 因为this是运行时确定指向的。 2.1 函数定义的嵌套 function outerFun(){ function innerFun(){ console.log('innerFun内部的this指向了:',this); } innerFun(); } outerFun(); 控制台输出的this指向全局对象。 2.2 对象属性的嵌套 当调用的函数在...
- 下一篇
JAVA_返回一个数值的相反数的几种方式.
一个方法接收一个int类型值,需要返回它的相反数. 如传入1,返回-1 传入-22,返回22 最简单的方式是return 0-number; 还有其他方式: public class Kata { public static int opposite(int number) { return -number; } } public class Kata{ public static int opposite(int number){ return number * -1; } } public class Kata { public static int opposite(int number) { return Math.negateExact(number); } } 还有个更奇葩的 return 13333-number-13332-1; 刚看到时感觉很奇妙,为什么是13333,它与int的MAXVALUE是有某种关系吗... 后来发现是自己绕弯子了...提交者是个新手.不过大家都给予了赞许的thumb up. 其实上面换成这样也是对的: return 1-number-1; 将...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS8编译安装MySQL8.0.19
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- Docker安装Oracle12C,快速搭建Oracle学习环境
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- Hadoop3单机部署,实现最简伪集群