Cryptology
文章平均质量分 82
密码(cryptorgraphy)是一个非常庞大而复杂的信息处理体系,设计信息的机密性、完整性、认证等许多方面,由此衍生出的技术无时无刻不在保卫着我们生活中的各种信息的安全,所以密码技术很重要。即便发现自己在密码学的海洋里迷失了方向,我们也仍要继续向前航行。请相信,我们终会冲破迷雾,见到光明。
洒家肉山大魔王
学习是一辈子的事情,去身上的戾气也是一辈子的修炼。
展开
-
密码算法OID汇总
XCN_CRYPT_ANY_GROUP_IDThe group OID is not identified. All OID groups will be included when searching.XCN_CRYPT_HASH_ALG_OID_GROUP_IDHashing algorithm group. This includes the following OIDs:XCN_CRYPT_ENCRYPT_ALG_OID_GROUP_IDSymmetric encryption algorithm转载 2024-06-01 18:44:38 · 69 阅读 · 1 评论 -
Keystore与Truststore的区别
Keystore 用于存储特定程序应提供给双方(服务器或客户端)以进行验证的私钥和身份证书。Truststore 用于存储来自认证机构 (CA) 的证书,这些证书验证服务器在 SSL 连接中提供的证书。转载 2024-01-28 10:48:24 · 379 阅读 · 0 评论 -
最新GM/T 0126-2023《HTML密码应用置标语法》等25项密码行业标准
本文转自国家密码管理局的微信头条号-【密码头条】发布的。原创 2023-12-07 20:39:45 · 332 阅读 · 0 评论 -
DER编码
DER(Distinguished Encoding Rules)编码是ASN.1数据结构在ASN.1 DER标准下打包的二进制编码的格式规范。它是应用广泛的ASN.1编码之一。ASN.1是应用领域很广泛的一种数据表示和编码方式。ASN.1是Abstract Syntax Notation One(抽象语法标记语言第一版)的缩写。ASN.1是DSL领域的经典代表,业内有“数据的XML”之美誉。ASN.1可以只用于规范数据结构,而DER编码则是规范实际存储和传输数据的方式。原创 2023-09-24 14:24:08 · 1009 阅读 · 0 评论 -
商用密码产品介绍
近年来,我国商用密码产品自主创新能力持续增强,产业支撑能力不断提升,已建成种类丰富、链条完整、安全适用的商用密码产品体系,部分产品性能指标已达到国际先进水平。转载 2023-09-02 09:16:18 · 226 阅读 · 0 评论 -
ASN.1抽象语法中常用类型编码[详解]
序列的Contents中包含,除了使用OPTIONAL或DEFAULT类型修饰的关键字之外,序列中含有每一个子项的ASN.1的完整编码,并且按照它们原先在序列中的顺序出现。本次介绍的是常用的ASN.1编码,这没有对所有的ASN.1类型进行解释,上述描述的基本都是ASN.1的基础类型,其他类型基本上都是上述类型的不同Contents编码规则。用来表示最后一个字节中补0的数量。第1子字节之后的字节,表示一个无符号数字,表示Contents中字节数量,其中最高有效位为第1子字节之后的第一个字节的第8 位。转载 2023-08-14 22:20:48 · 970 阅读 · 0 评论 -
对称算法模式-GCM(Galois/Counter Mode)
以下内容来自《NIST Special Publication 800-38D November, 2007》- Recommendation for Block Cipher Modes of Operation:Galois/Counter Mode (GCM) and GMAC。原创 2023-05-12 18:47:02 · 1019 阅读 · 0 评论 -
Java封装实现国密SM4对称加解密运算
SM4密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。该算法的分组长度为128比特,密钥长度为128比特。(十六进制表示则为32位,明文和密钥等长)加密算法与密钥扩展算法都采用32轮非线性迭代结构。密钥扩展算法:将加密密钥变换为轮密钥的运算单元。数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。原创 2023-03-11 14:08:35 · 3066 阅读 · 0 评论 -
国密SM4分组密码算法
SM4密码算法是我国自主设计的分组对称密码算法,用于实现数据的加密/解密运算,以保证数据和信息的机密性。1. 该算法的分组长度为128比特,密钥长度为128比特。(十六进制表示则为32位,明文和密钥等长)2. 加密算法与密钥扩展算法都采用32轮非线性迭代结构。3. 密钥扩展算法:将加密密钥变换为轮密钥的运算单元。4. 数据解密和数据加密的算法结构相同,只是轮密钥的使用顺序相反,解密轮密钥是加密轮密钥的逆序。原创 2023-03-11 10:33:33 · 2082 阅读 · 1 评论 -
数据填充规则之PKCS7
在数据加解密应用中,数据填充又是其中重要的组成部分。因为即便你的数据长度符合blockSize的整数倍时,也需要填充,填充的长度反而是最大的,要填充blockSize个char(blockSize)字符在数据尾部,这样牺牲了数据长度的做法是为了更为灵活透明的去解包数据,发送端和接收端不需要约定好blockSize,接收端总能通过数据包的最后一个字符得到填充的数据长度。特别注意的一点是如果是数据刚好满足数据块长度也要在元数据后在按PKCS7规则填充一个数据块数据,这样做的目的是为了区分有效数据和补齐数据。原创 2023-01-12 21:32:19 · 1865 阅读 · 0 评论 -
SSL/TLS 的工作原理
HTTPS 之所以能达到较高的安全性要求,就是结合了 SSL/TLS 和 TCP 协议,对通信数据进行加密,解决了 HTTP 数据透明的问题。接下来重点介绍一下 SSL/TLS 的工作原理。原创 2022-11-10 21:44:42 · 1015 阅读 · 0 评论 -
密码学家的工具箱
对称密码是一种使用相同的密钥进行加密和解密的技术,用于确保消息的机密性。在对称密码的算法方面,主要有:AES、DES、SM4。尽管对称密码能够确保消息的机密性,但需要解决将解密密钥配送给接受者时的安全性问题。原创 2022-11-08 22:11:11 · 225 阅读 · 0 评论 -
关于RSA加密/解密中OAEP填充模式和PKCS1-v1_5填充模式时对于原文数据的要求
在《RFC-8017 PKCS #1 RSA Cryptorgraphy Specification Version 2.2》规范的第7章节中规定了RSA算法在PKCS1填充和OAEP填充模式下,对于原文数据的约束。本节内容主要起因于工作中遇到的一个问题,对于应用开发者来说,实际上并不需要我们去深度学习RSA算法实现,我们只要知道RSA算法加解密应用场景,不同场景下规范定义的数据封装格式,及签名/验签/加密/解密方案约束即可。这里概括下本节主要内容,用于学习总结,手动翻译,个中存在错误纰漏欢迎批评指正。原创 2022-09-27 22:05:41 · 7231 阅读 · 8 评论 -
比特序列的XOR运算
现代的密码都是建立在计算机的基础之上,这是因为现代的密码所处理的数据量非常大,而且密码算法也非常复杂,不借助计算机的力量就无法完成加密和解密的操作。计算机的操作对象并不是文字,而是由0和1排列而成的比特序列。无论是文字、图像、声音、视频还是程序,在计算机中都是使用比特序列来表示的。执行加密操作的程序,就是将表示明文的比特序列转换为表示密文的比特序列。将现实世界中的东西映射为比特序列的操作称为编码。例如midnight这个单词,我们可以对它的每个字母逐一进行编码,这种编码规则叫做ASCII。原创 2022-09-25 11:49:33 · 1141 阅读 · 0 评论 -
数字签名和数字证书的原理解读(图文)
道格想欺骗苏珊,他偷偷使用了苏珊的电脑,用自己的公钥换走了鲍勃的公钥。此时,苏珊实际拥有的是道格的公钥,但是还以为这是鲍勃的公钥。因此,道格就可以冒充鲍勃,用自己的私钥做成“数字签名”,写信给苏珊,让苏珊用假的鲍勃公钥进行解密。这里要强调的是,只要鲍勃的私钥不泄露,这封信就是安全的,即使落在别人手里,也无法解密。13. 苏珊收信后,用CA的公钥解开数字证书,就可以拿到鲍勃真实的公钥了,然后就能证明“数字签名”是否真的是鲍勃签的。8. 苏珊收信后,取下数字签名,用鲍勃的公钥解密,得到信件的摘要。原创 2022-09-23 21:53:20 · 332 阅读 · 0 评论 -
消息签名和验签
直接对消息签名的方法是对整个消息的加密,非常耗时,这是因为公钥密码算法本来就非常慢。那么,能不能生成一种很短的数据来代替消息本身呢?当然有,那就是单向散列函数。我们可以不必对整个消息进行加密(即),而是先用单向散列函数求出消息的散列值,然后在将散列值进行加密(对散列值签名)就可以了。无论消息有多长,散列值永远都是这么短,因此对其进行加密(签名)就非常轻松了。原创 2022-09-20 21:07:22 · 508 阅读 · 0 评论 -
数字签名与数字信封
对称密码算法的优点是加解密运算非常快,适合处理大批量数据,但其密钥的分发与管理比较复杂。而非对称密钥算法的特点是公钥与私钥分离,非常适合密钥的分发与管理;但其运行速度不快,又不适合处理大批量数据。如果将对称密码算法和非对称密码算法的优点结合起来,则既能处理大批量数据,又能简化密钥分发与管理,于是数字信封机制应运而生。数字信封并不需要分发和管理对称密钥,而是随机产生对称密钥,采用对称密码算法对大批量数据进行加密,并采用非对称密钥算法对该对称密钥进行加密;原创 2022-09-20 21:02:04 · 3983 阅读 · 1 评论 -
X.509证书编码及解析
1. 证书的整体结构证书内容、签名算法、签名结果用ASN.1语法描述如下:Certificate::=SEQUENCE{ tbsCertificate TBSCertificate, signatureAlgorithm AlgorithmIdentifier, signatureValue BIT STRING}其中,签名算法为CA对tbsCertificate进行签名所使用的算法;类型为AlgorithmIdentifier,其ASN原创 2021-03-23 22:04:33 · 998 阅读 · 0 评论 -
PKCS7数字信封简述
数字信封,英文是Digital Envelope,望文生义,就可以知道将需要传递的数据,通过加密的方式包裹起来。数字信封的准确定义,在《PKCS #7: Cryptographic Message Syntax Standard》标准的第10章中给出,原话是:“”。数字信封的组成如下图所示:从上图可以看出,数字信封和我们日常生活中使用的信封,还是不一样的:日常生活中的信封,仅仅指包裹信件的外壳,不包含信件(内容);但数字信封其实是包含内容的。...原创 2022-08-17 21:27:27 · 3379 阅读 · 0 评论 -
国密SM2椭圆曲线密码算法
其中,HASH为使用SM3算法对明文数据运算得到的杂凑值,其长度固定为256位。CipherText是与明文数据等长的密文。原创 2022-08-15 21:11:16 · 6815 阅读 · 0 评论 -
ASN.1接口描述语言详解
ASN.1对于大多数人来讲似乎很陌生,可能很多人没有听说过ASN.1,然而事实上它就应用在我们生活的周围。比如,欧洲和日本使用的移动电话基于TCAP消息协议的,TCAP消息协议中则采用的ASN.1描述的,使用了BER(BasicEncodingRules)编码规则,共同实现了移动电话的呼叫。可以说,在一部移动电话与另一部电话之间通信时,是ASN.1协助实现了两部话机间的呼叫。此外,ASN.1和编码规则还被联邦快递用于大量地传输信息;大公司如HP/IBM/SUN等,使用ASN.1描述其打印机作业管理的标准接。原创 2022-07-27 22:35:10 · 2668 阅读 · 0 评论 -
关于对称算法中数据的填充模式
对称算法一般分为(按照单个bit位或byte字节进行运算)和块加密(根据特定长度分块进行运算)两种类型。对称加解密中,当需要分块处理数据,数据长度不符合密码规范定义的分组数据包要求时,我们需要按一定的方法填充分组数据包长度,使其满足一定的规则要求。......原创 2022-07-24 15:08:44 · 1262 阅读 · 0 评论 -
toString()与new String()用法区别
我们在平时工作中做Base6编解码数据转字符串时经常会遇到toString()与newString(),对于这两者的用法区别简单总结一下。这里应该用newString()的方法,因为Base64是一种转换编码格式的算法。toString()与newString()用法区别。调用该方法将获取一个。.........原创 2022-07-22 14:49:37 · 727 阅读 · 0 评论 -
Java封装实现国密SM3摘要计算
Java封装实现国密SM3摘要算法原创 2022-07-22 10:31:17 · 2277 阅读 · 0 评论 -
国密SM3杂凑算法
SM3算法是由我国著名的密码学家王小云和国内其他专家共同设计的哈希算法,它只能用于加密而不能解密,是一种简单的单向算法。于2010年12月17日经国家密码管理局发布,现已广泛应用于金融、交通、国家电网等重要经济领域,并于2018年10月正式成为ISO/IEC国际标准。SM3算法首先将输入数据按照512位(64字节长度)的大小分成若干组,最后一组不足512位时按规则填充至512位。经过多轮迭代压缩后,输出长度为256位(32字节)的数值。就是对长度为l(l.....................原创 2022-07-19 22:49:37 · 8927 阅读 · 4 评论 -
十进制、二进制、八进制、十六进制转换
一、 十进制与二进制之间的转换1.1 十进制转换为二进制,分为整数部分和小数部分【1】整数部分方法:采用"除2取余,逆序排列"法即每次将整数部分除以2,余数为该位权上的数,而商继续除以2,余数又为上一个位权上的数,这个步骤一直持续下去,直到商为0为止,最后读数时候,从最后一个余数读起,一直到最前面的一个余数。举个栗子:将十进制数168转换为二进制数除数 被除数 商 余数 168 / 2 = 84 ...... ...原创 2021-02-24 21:04:13 · 3602 阅读 · 0 评论 -
摘要算法(哈希算法)
1. HASH算法哈希算法(Hash)又称摘要算法(Digest),它的作用是:对任意一组输入数据进行计算,得到一个固定长度的输出摘要。哈希函数的主要作用不是完成数据加密与解密工作,它是用来检验数据完整性的重要技术,运算过程具有不可逆性。通过哈希函数,可以为数据创建"数组指纹"(散列值/哈希值),哈希值通常是一个短的随机字母和数字组成的字符串。消息认证流程如下:在上述认证流程中,信息收发双方在通信前已经商定好了具体的哈希算法,并且该算法是公开的。如果消息在传递过程中被篡改,则该消息.原创 2021-09-20 00:25:58 · 9746 阅读 · 0 评论 -
【分组加密算法】-加解密模式之CBC模式和ECB模式解读
模式(密文分组链接模式),之所以叫这个名字,是因为密文分组像链条一样互相连接在一起。在CBC模式中,首先将明文分组和一个密文分组进行异或(XOR)运算,然后再进行加密。在这种方法中,每个密文块都依赖与它前边的所有明文块。...原创 2021-08-29 21:03:56 · 14773 阅读 · 0 评论 -
关于MD5加密,及linux环境获取文件MD5值的脚本
关于MD5加密MD5的典型应用是对一段信息(Message)产生信息摘要(Message-Digest),以防止被篡改。比如,在UNIX下有很多软件在下载的时候都有一个文件名相同,文件扩展名为.md5的文件,在这个文件中通常只有一行文本,大致结构如: MD5 (tanajiya.tar.gz) = 0ca175b9c0f726a831d895e269332461 这就是tanajiya.tar.gz文件的数字签名。MD5将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生了这个唯..原创 2021-07-26 21:50:18 · 796 阅读 · 0 评论 -
现代密码法学算法分类
密码系统的结果称作密码算法,进行加密或解密操作所需的关键参数称作密钥。事实上,在日常社会活动领域中使用的密码算法基本上都是公开的,现代密码学的安全性主要取决于密钥的设计和使用。根据技术特征,现代密码学算法大致分为三类:1-对称算法对称算法:是一种加密密钥和解密密钥相同的密码算法,又称密码密钥算法或单密钥算法。该类算法分为流密码算法和分组密码算法。流密码算法又称为序列密码算法,每次加密或解密一位或一字节的明文或密文。 分组密码算法将明文(密文)成固定长度的数据库(比特块或字节块),用同一原创 2021-05-16 14:01:19 · 8022 阅读 · 3 评论 -
关于加密与解密、签名与验签
前言面对 MD5、SHA、DES、AES、RSA 等等这些名词你是否有很多问号?这些名词都是什么?还有什么公钥加密、私钥解密、私钥加签、公钥验签。这些都什么鬼?或许在你日常工作没有听说过这些名词,但是一旦你要设计一个对外访问的接口,或者安全性要求高的系统,那么必然会接触到这些名词。所以加解密、加签验签对于一个合格的程序员来说是必须要掌握的一个概念。那么加解密相关的密码学真的离我们很遥远吗?其实生活中有很多常见的场景其实都用到了密码学的相关知识,我们不要把它想得太难,例如在《睡在我上铺的兄弟》原创 2021-04-04 21:24:21 · 1241 阅读 · 0 评论 -
Java 密码学算法
Java 密码学算法候捷老师在《深入浅出MFC 2e(电子版)》中引用林语堂先生的一句话:只用一样东西,不明白它的道理,实在不高明只知道How,不知道Why,出了一点小问题时就无能为力了。我们课上鼓励大家在Linux下学习编程,尽量在命令行中编辑/编译/调试程序,Git的使用,数据库的管理都先会命令方式下使用,这样在IDE中,在GUI界面中出了问题,我们有更好的方法查找。现在我们遇到另外一个极端,不会用一样东西,却想要明白它的道理,这实在太难了。比如有的同学连Linux都没用过,却想弄.原创 2021-02-03 21:14:19 · 898 阅读 · 1 评论 -
Base64原理
Base64算法最早应用于解决电子邮件传输的问题。早期,由于“历史问题”,电子邮件只允许ASCII码字符。如果要传输一封带有非ASCII码字符串的电子邮件,当它通过有“历史问题”的网关是就可能出现问题。这个网关很可能会对这个非ASCII码字符的二进制位做调整,即将这个非ASCII码的8位二进制码的最高位置为0。此时,用户收到的邮件将会是一封纯粹的乱码邮件,基于这个原因就产生了Base64算法。.........原创 2019-05-06 21:01:26 · 6698 阅读 · 11 评论 -
Bouncy Castle 密码包的配置及使用详解
1、简述BouncyCastle(轻量级密码术包)是一种用于 Java 平台的开放源码的轻量级密码术包;Bouncycstle 包含了大量的密码算法,其支持椭圆曲线密码算法,并提供JCE 1.2.1的实现。2、为什么要使用BouncyCastle?我们知道,Java标准库提供了一系列常用的哈希算法。但如果我们要用的某种算法,Java标准库没有提供怎么办?方法一:自己写一个,难度很大;方法二:找一个现成的第三方库,直接使用。BouncyCastle就是一个提供了很多哈希算法和加密算法的原创 2021-01-20 23:18:27 · 31007 阅读 · 6 评论