对称密钥

【转】rsa加解密的内容超长的问题解决

寵の児 提交于 2020-02-29 12:06:11
一. 现象: 有一段老代码用来加密的,但是在使用key A的时候,抛出了异常:javax.crypto.IllegalBlockSizeException: Data must not be longer than 117 bytes。老代码已经做了分段的加密,应该是已经考虑了加密长度的问题才对。换了另一个线上代码中的key B,正常加密没有异常。 二. 解决: 老代码如下: private static String encryptByPublicKey(String plainText, String publicKey) throws Exception { int MAX_ENCRYPT_BLOCK = 128; byte[] data = plainText.getBytes("utf-8"); Key e = RSASignature.getPublicKey(publicKey); // 对数据加密 Cipher cipher = Cipher.getInstance("RSA"); cipher.init(Cipher.ENCRYPT_MODE, e); int inputLen = data.length; ByteArrayOutputStream out = new ByteArrayOutputStream(); int offSet = 0; byte[]

国密算法

我是研究僧i 提交于 2020-02-29 04:55:51
算法分类 国密即国家密码局认定的国产密码算法。主要有SM1,SM2,SM3,SM4。密钥长度和分组长度均为128位。 SM1 为对称加密。其加密强度与AES相当。该算法不公开,调用该算法时,需要通过加密芯片的接口进行调用。 SM2为非对称加密,基于ECC。该算法已公开。由于该算法基于ECC,故其签名速度与秘钥生成速度都快于RSA。ECC 256位(SM2采用的就是ECC 256位的一种)安全强度比RSA 2048位高,但运算速度快于RSA。 SM3 消息摘要。可以用MD5作为对比理解。该算法已公开。校验结果为256位。 SM4 无线局域网标准的分组数据算法。对称加密,密钥长度和分组长度均为128位。 SM2算法 SM2算法:SM2椭圆曲线公钥密码算法是我国自主设计的公钥密码算法,包括SM2-1椭圆曲线数字签名算法,SM2-2椭圆曲线密钥交换协议,SM2-3椭圆曲线公钥加密算法,分别用于实现数字签名密钥协商和数据加密等功能。SM2算法与RSA算法不同的是,SM2算法是基于椭圆曲线上点群离散对数难题,相对于RSA算法,256位的SM2密码强度已经比2048位的RSA密码强度要高 学习sm2算法,首先学习ECC算法 ECC算法描述:   1、用户A选定一条适合加密的椭圆曲线Ep(a,b)(如:y2=x3+ax+b),并取椭圆曲线上一点,作为基点G。   2、用户A选择一个私有密钥k

《现代密码学》习题

被刻印的时光 ゝ 提交于 2020-02-29 04:54:56
第一章 1.1949年,Shannon发表题为《保密系统的通信理论》的文章,为密码系统建立了理论基础,从此密码学成为一门科学。 2.一个加密系统至少由明文、密文、加密算法、解密算法和密钥组成,其安全性是用密钥决定的。 3.计算和估计出破译密码系统的计算量下限,利用已有的最好方法破译他的所需要的代价超出了破译者的破译能力(时间、空间、资金等资源),那么该密码系统的安全性是 计算安全。 4.根据密码分析者所掌握的分析资料的不同,密码分析一般可以分为4类:唯密文攻击、已知明文攻击、选择明文攻击,选择密文攻击,其中破译难度最大的是选择密文攻击。 5.1976年,Diffie和Helman在《密码学的新方向》中提出立了公开密钥密码的思想,开创了现代密码学的新领域。 6.密码学发展过程中,两个质的飞跃分别指1949年香农发表的保密系统的通信理论和公钥密码思想。 7.密码学是研究信息寄信息系统安全的科学,密码学又分为密码编码学和密码分析学。 8.一个保密系统一般是明文、密文、密钥、加密算法和解密算法五部分组成的。 9.密码体制是指实现加密和解密功能的密码方案,从使用密钥策略上,可分为对称和非对称。 10.对称密码体制又称为秘密密钥体制,包括分组密密码和序列密码。 第二章 1.字母频率分析法对单表带换密码算法最有效。 2.希尔密码算法抵御频率分析攻击能力最强,而对已知明文攻击最弱。 3

AES算法

你离开我真会死。 提交于 2020-02-28 17:24:05
高级加密标准(Advanced Encryption Standard,AES),又称 高级加密标准Rijndael加密法,是美国联邦政府采用的一种区块加密标准。这个标准用来替代原先的DES,已经被多方分析且广为全世界所使用。经过五年的甄选流程,高级加密标准由美国国家标准与技术研究院 (NIST)于2001年11月26日发布于FIPS PUB 197,并在2002年5月26日成为有效的标准。2006年,高级加密标准已然成为对称密钥加密中最流行的算法之一。 对称密码体制的发展趋势将以分组密码为重点。分组密码算法通常由密钥扩展算法和加密(解密)算法两部分组成。密钥扩展算法将b字节用户主密钥扩展成r个子密钥。加密算法由一个密码学上的弱函数f与r个子密钥迭代r次组成。混乱和密钥扩散是分组密码算法设计的基本原则。抵御已知明文的差分和线性攻击,可变长密钥和分组是该体制的设计要点。 AES是美国国家标准技术研究所NIST旨在取代DES的21世纪的加密标准。 AES的基本要求是,采用对称分组密码体制,密钥长度的最少支持为128、192、256,分组长度128位,算法应易于各种硬件和软件实现。1998年NIST开始AES第一轮分析、测试和征集,共产生了15个候选算法。1999年3月完成了第二轮AES2的分析、测试。2000年10月2日美国政府正式宣布选中比利时密码学家Joan Daemen 和

DotNet加密方式解析--对称加密

ⅰ亾dé卋堺 提交于 2020-02-28 15:02:56
离过年又近了一天,回家已是近在咫尺,有人欢喜有人愁,因为过几天就得经历每年一度的装逼大戏,亲戚朋友加同学的各方显摆,所以得靠一剂年终奖来装饰一个安稳的年,在这里我想起了一个题目“论装逼的技术性和重要性”。 都是老司机了,不扯淡,站在外面的都进来,然后请后面的把门关一下,我们接着出发。 上一篇主要介绍.NET的散列加密,散列算法主要用于签名等操作,在我们的项目中,如果对加密没有特别的要求,一般都是采用的对称加密方式,因为这种加密方式相较其他加密方式较为简单,但是这种加密方式比较的高效,所以今天就介绍一下.NET的对称加密方式。 一.DotNet对称加密概述: 对称加密是采用单密钥加密方式,这也就意味着加密和解密都是用同一个密钥。根据密码学的相关定义,对称加密系统的组成部分有5个,分别是明文空间,密文空间,密钥空间,加密空间,解密算法。接下来用一个示意图来表示一下: DotNet对称加密算法的核心是一个密码函数,该函数将固定大小的消息数据块(纯文本)转换成加密数据库(加密文本)。转化为加密文本或重建为纯文本都需要密钥,加密是可逆的,或者说是双向的过程,可以使用密钥来反转加密效果并重建纯文本。 大多数对称加密算法是在不同的密码模式下运行,在密码函数处理数据之前,这些模式指定了准备这些数据的不同方式。密码模式有:电子代码薄模式,密码块链接,密码反馈模式。 有关块值填充的内容在下面会讲解到。

防止开发人员获取到敏感数据(SQL Server的数据加密简介)

旧城冷巷雨未停 提交于 2020-02-28 07:20:54
背景 有时候,我们还真的会碰到这样的需求:防止开发人员获取到敏感数据。也许你觉得很简单,把开发和运营分开不就可以了吗?是的,如果公司有专门的运营团队的话,但对于很多小公司来说,几个人的开发团队就兼顾了需求分析、设计、开发、测试、调试、部署和运营了,数据库密码知道,程序代码全有,怎么办?——必须对数据库里的数据进行加密,这是唯一的办法。 也许你还是不明白,什么东西需要瞒着我们了不起的程序员,好吧,我直说了:工资!假如你的公司让你做一个工资系统,你会不会有这方面的顾虑,一旦工资信息被公开,后果必定是很严重的,也许老板对你很信任,认为让你知道没什么问题,但其他开发人员呢?后来接手你的工作的人呢?所以必须考虑这个问题。而且,还外带一个需求:员工自己可以用自己的“薪资查看密码”来查看自己的工资(只能看自己的),每个人自己的“薪资查看密码”都不一样。另外不需要描述的隐藏需求还有:将来必定是要对薪资做统计做报表的。 相关代码 SQL Server(2005及之后的版本)提供了内置的加密机制,加密方式有两大类,一类是对称加密,另一类则是非对称加密。 SQL Server的对称加密示例代码: --创建一个对称密钥,其实只需要创建一次,不用每次都创建,这个对称密钥密码为123456(嗯,大多数人认为的密码),密码是nvarchar类型的 CREATE SYMMETRIC KEY my_symetric

HTTPS中TLS/SSL的握手过程

半城伤御伤魂 提交于 2020-02-27 09:05:09
1,非对称加密技术 非对称加密算法需要两个密钥,公开密钥(publickey)和私有密钥(privatekey);公钥和私钥是成对出现的。 非对称加密例子:B想把一段信息传给A,步骤:1)A把公钥传给B;2)B拿到A的公钥并利用此密钥给信息加密;3)B把加密的信息传给A;4)A利用私有密钥对加密信息进行解密即可得到B想给自己的信息。 (这个过程叫做密码传输,即B把信息加密后传给A) 问题:如果有个捣乱的冒充B,也用A的公钥给一段信息加密,并传给A,A再私钥解密得到的信息就会误认为是B的。 要解决此问题,B需要给A传个验证信息,让A可以验证自己受到的信息是B传的。该验证信息即下面的数字摘要(数字指纹) 2,数字摘要技术 该技术主要利用了哈希函数的两个特性:1)单向性;2)计算结果位数固定 数字摘要是采用单向Hash函数将需要加密的明文“摘要”成一串固定长度(128位)的密文,这一串密文又称为数字指纹,它有固定的长度,而且不同的明文摘要成密文,其结果总是不同的,而同样的明文其摘要必定一致。“数字摘要“是https能确保数据完整性和防篡改的根本原因。 3,数字签名技术 数字签名技术既利用了数字摘要(数字指纹)技术也利用了非对称加解密技术 。 数字签名过程 :1)B利用哈希函数得到上面传输信息的哈希值;2)B利用私钥给哈希值加密(注意:这里的非对称加密(私钥加密,公钥解密

加密与安全:非对称加密算法 RSA 1024 公钥、秘钥、明文和密文长度

六月ゝ 毕业季﹏ 提交于 2020-02-27 01:51:27
RSA 1024 是指公钥及私钥分别是 1024bit,也就是 1024/8 = 128Bytes。 RSA 原理 RSA 算法密钥长度的选择是安全性和程序性能平衡的结果,密钥长度越长,安全性越好,加密解密所需时间越长。 1、非对称加密算法中 1024bit 密钥的强度相当于对称加密算法 80bit 密钥的强度; 2、密钥长度增长一倍,公钥操作所需时间增加约 4 倍,私钥操作所需时间增加约 8 倍,公私钥生成时间约增长 16 倍; 3、明文长度 一次能加密的明文长度与密钥长度成正比: len_in_byte(raw_data) = len_in_bit(key)/8 -11,如 1024bit 的密钥,一次能加密的内容长度为 1024/8 -11 = 117 byte。 所以非对称加密一般都用于加密对称加密算法的密钥,而不是直接加密内容。 注: 明文长度小于等于密钥长度 128Bytes - 11 这个说法本身不太准确,会让人产生 RSA 1024 只能加密 117 字节长度明文的误解。 实际上,RSA 算法本身要求加密内容也就是明文长度 m 必须满足 0<m<n,也就是说内容这个大整数不能超过 n,否则就出错。 那么如果 m=0 是什么结果? 普遍 RSA 加密器会直接返回全 0 结果,如果 m>n,运算就会出错。 因此,RSA 实际可加密的明文长度最大也是 1024bits

[Java 安全]加密算法

允我心安 提交于 2020-02-26 19:30:39
Base64 编码 算法简述 定义 Base64 内容传送编码是一种以任意 8 位字节序列组合的描述形式,这种形式不易被人直接识别。 Base64 是一种很常见的编码规范,其作用是将二进制序列转换为人类可读的 ASCII 字符序列,常用在需用通过文本协议(比如 HTTP 和 SMTP )来传输二进制数据的情况下。 Base64 并不是加密解密算法 ,尽管我们有时也听到使用 Base64 来加密解密的说法,但这里所说的加密与解密实际是指编码( encode )和解码( decode )的过程,其变换是非常简单的,仅仅能够避免信息被直接识别。 原理 Base64 算法主要是将给定的字符以字符编码 ( 如 ASCII 码, UTF-8 码 ) 对应的十进制数为基准,做编码操作: (1) 将给定的字符串以字符为单位,转换为对应的字符编码。 (2) 将获得字符编码转换为二进制 (3) 对二进制码做分组转换,每 3 个字节为一组,转换为每 4 个 6 位二进制位一组(不足 6 位时低位补 0 )。这是一个分组变化的过程, 3 个 8 位二进制码和 4 个 6 位二进制码的长度都是 24 位( 3*8 = 4*6 = 24 )。 (4) 对获得的 4-6 二进制码补位,向 6 位二进制码添加 2 位高位 0 ,组成 4 个 8 位二进制码。 (5) 对获得的 4-8 二进制码转换为十进制码。

http协议与https协议

北城余情 提交于 2020-02-26 15:16:00
1.概念:   超文本传输协议。因特网上应用最为广泛的一种网络传输协议,所有的WWW文件都必须遵守这个标准。 2.常用请求头信息   - User-Agent:请求载体的身份标识   - Connection:请求完毕后是断开连接还是保持连接//close|keepalive   - Accept:text/html,image/*(告诉服务器,浏览器可以接受文本,网页图片)  - Accept-Charaset:ISO-8859-1 [接受字符编码:iso-8859-1]  - Accept-Encoding:gzip,compress[可以接受 gzip,compress压缩后数据]  - Accept-Language:zh-cn[浏览器支持的语言]  - Host:localhost:8080[浏览器要找的主机]  - Referer:http://localhost:8080/test/abc.html[告诉服务器我来自哪里,常用于防止下载,盗链] 3.常用响应头   - Content-Type: 服务器响应回客户端的数据类型   - Allow:服务器允许的请求方式   - Content-Length:返回内容的长度 4.https协议   - 安全的http协议(数据加密) 5.加密方式   - 对称秘钥加密 /* 客户端向服务器发送一条信息