密码学实践强化训练
文章平均质量分 69
密码学实践强化训练
优惠券已抵扣
余额抵扣
还需支付
¥39.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
代码改变世界ctw
ARMv8/ARMv9/TEE/安全/芯片
展开
-
密码学实践强化训练--目录
👉👉👉 个人博客笔记导读目录(全部) 👈👈👈。原创 2023-07-11 21:38:27 · 348 阅读 · 0 评论 -
AES和Rijndael的区别
请注意,这只是一种近似的发音方式,因为该词是荷兰姓氏 “Rijmen” 和 “Daemen” 的组合,其发音在不同地区可能会有轻微变化。因此,可以说 AES 是 Rijndael 的一个特定实例,它在标准化过程中固定了块大小和密钥长度选项。AES 的安全性和性能在许多方面都得到了广泛的验证和采纳,因此它通常被认为是一种非常可靠和高效的加密算法。AES(高级加密标准)和 Rijndael(通常称为 Rijndael 加密算法)之间存在一些混淆,因为它们在密码学中有一定的联系,但也有一些区别。原创 2023-09-29 13:04:51 · 342 阅读 · 0 评论 -
AES和SM4各有什么特点?有什么不同之处?
总的来说,AES和SM4都是强大的加密算法,但它们的选择通常取决于特定的应用需求和法规要求。如果在全球范围内使用,AES可能更为常见,而在中国国内遵循国家标准的情况下,SM4可能更为适用。原创 2023-09-29 13:01:19 · 1910 阅读 · 0 评论 -
对称加密算法都有哪些,分别具有什么特点
SM4的安全性经过了广泛的审查和测试,被认为在满足特定安全需求时是有效的。AES是一种现代的对称加密算法,被广泛认为是安全且高效的。它支持多种密钥长度(128位、192位和256位),具有较长的密钥长度,更难以破解。3DES是DES的改进版本,使用3个56位密钥,对数据块进行多次加密。尽管安全性相对较高,但由于密钥长度较短,性能较低,因此在现代加密中不常使用。DES是早期的对称加密算法,使用56位密钥,对64位数据块进行加密。IDEA是一种块密码,被认为相对较安全,但由于专利问题,未被广泛采用。原创 2023-09-29 12:38:32 · 368 阅读 · 0 评论 -
有关数字证书的基本概念扫盲
在互联网上,数字证书起着关键作用,帮助用户识别受信任的网站和通信实体,从而保护他们的隐私和数据安全。数字证书包含了证书持有者的公钥(Public Key)和相关信息,以及由证书颁发机构(Certificate Authority,CA)签名的数字签名。数字证书是一种用于验证数字身份和确保通信安全的安全工具。公共CA,如VeriSign、Comodo和Let’s Encrypt,经过了广泛的信任验证,因此它们的数字证书在互联网上得到了广泛接受。这个数字签名是由CA的私钥生成的,用于验证证书的真实性和完整性。原创 2023-09-29 07:57:49 · 112 阅读 · 0 评论 -
消息认证的算法 Message Authentication Code 介绍
消息认证码(Message Authentication Code,MAC)是一种用于验证消息完整性和真实性的密码学算法。HMAC(Hash-based Message Authentication Code): HMAC是一种基于散列函数的MAC算法,通常与散列函数(如SHA-256)一起使用。CBC-MAC(Cipher Block Chaining MAC): CBC-MAC使用块密码的加密模式来生成MAC。保密性: MAC的计算过程和密钥是保密的,只有知道密钥的人能够验证MAC是否正确。原创 2023-09-29 07:56:11 · 323 阅读 · 0 评论 -
数字摘要算法都有哪些
SHA-256、SHA-384 和 SHA-512:SHA-2 系列是 SHA-1 的后继者,包括 SHA-256、SHA-384 和 SHA-512 等变种。SHA-3(Secure Hash Algorithm 3):SHA-3 是 NIST 所设计的一种哈希算法,提供了与 SHA-2 不同的设计。数字摘要算法是密码学中用于生成数据摘要或数据签名的算法,主要用于验证数据的完整性和真实性。Keccak:Keccak 是 SHA-3 标准的基础,它是一种可配置的哈希算法,适用于多种应用场景。原创 2023-09-29 07:53:07 · 278 阅读 · 0 评论 -
FIPS 140简介
总之,FIPS 140-1、FIPS 140-2 和 FIPS 140-3 是一系列密码模块安全标准,它们之间的不同主要在于发布年份、安全要求的严格程度以及密码学选项。总之,FIPS 140标准是一系列用于评估和验证加密模块安全性的标准,而AES是其中一个常用的对称加密算法,可用于满足这些标准的要求。它引入了更多的密码学选项,要求更严格的密码学模块设计和更严格的测试要求。特点:FIPS 140-1 是最早的密码模块安全标准,它规定了对加密模块进行评估和验证的一些基本要求,包括物理安全性、加密算法的选择等。原创 2023-09-29 07:51:39 · 259 阅读 · 0 评论 -
分组密码和模式的介绍
AES(Advanced Encryption Standard): AES是一种现代的分组密码算法,支持不同的密钥长度,包括128位、192位和256位。这些是一些常见的分组密码模式,每种模式都适用于不同的应用场景,具体的选择取决于安全性和性能需求。分组密码是密码学中的一类加密算法,它将明文数据分成固定大小的块(通常是64位或128位),然后对每个块进行加密。Twofish: Twofish是Blowfish的改进版本,它是一种高度安全的分组密码算法,支持128位、192位和256位密钥。原创 2023-09-29 07:48:07 · 84 阅读 · 0 评论 -
密码学算法都是怎样实现的? 都有哪些实现方式?
硬件加速卡: 在高性能服务器和网络设备中,可以使用专用的硬件加速卡,这些卡上集成了密码学硬件模块,用于处理加密和解密操作。硬件加速实现: 为了提高性能,一些计算机系统提供了硬件加速的功能,如硬件加速的AES指令集。在大多数情况下,会选择一种混合实现方式,以充分利用硬件加速和软件优化,从而实现最佳性能和安全性的平衡。纯软件实现: 这是最通用的方式,密码学算法完全由软件编写和执行。专用芯片: 一些高安全性的应用可能使用专用的密码学芯片,这些芯片专门设计用于执行密码学操作,并提供高度的物理安全性。原创 2023-09-29 07:41:39 · 188 阅读 · 0 评论 -
密码学算法都有哪些开源的库
OpenSSL: OpenSSL是一个广泛使用的密码学库,支持多种加密算法和协议,包括SSL/TLS、RSA、DSA、ECC、AES等。它提供了一组API,可用于加密、解密、签名、验证和安全通信。PyCryptodome: Pycryptodome是Python密码学库的一个分支,提供了Python开发人员所需的各种密码学功能,包括对称和非对称加密、数字签名、密码学随机数生成等。Botan: Botan是一个C++密码学库,支持多种密码学算法和协议,包括TLS、SSH、PGP、RSA、ECC等。原创 2023-09-29 07:38:33 · 409 阅读 · 0 评论 -
PKCS标准都有哪些
PKCS #11 - Cryptographic Token Interface (Cryptoki): 这个标准定义了一种通用的API,用于访问硬件安全模块(HSM)和密码令牌,以执行密码学操作,如密钥管理、加密和签名。PKCS #1 - RSA Cryptography Standard: 这个标准定义了RSA加密和数字签名算法的规范,包括RSA密钥的生成和管理,以及与RSA相关的密码学操作。PKCS #1也包括了一些旧版和更新的版本,如PKCS #1 v1.5和PKCS #1 v2.2。原创 2023-09-29 07:34:19 · 175 阅读 · 0 评论 -
常见的密码学算法都有哪些?
以上只是一些常见的密码学算法和协议,实际上还有许多其他算法和协议,用于不同的安全应用和场景。此外,密码学领域不断发展,新的算法和协议不断涌现,以满足不断变化的安全挑战。SHA-256、SHA-384、SHA-512:SHA(安全散列算法)系列的不同变种,用于生成数据的固定长度哈希值。ECC(椭圆曲线加密):在相对较短的密钥长度下提供与RSA相似的安全性的算法。ECDSA(椭圆曲线数字签名算法):基于椭圆曲线加密的数字签名算法。DSA(数字签名算法):专门用于数字签名的非对称算法。原创 2023-09-29 07:32:29 · 516 阅读 · 0 评论 -
RSA中PCKS1, PSS and OAEP的区别
它是现代应用中用于RSA加密的首选填充方案,因为它提供了更好的安全性和抵御选择性填充攻击的能力。它是现代的、安全的数字签名方案的首选。目标:OAEP填充是为RSA加密设计的,其主要目标是提供更高的保密性和安全性,以及在保持数据完整性的同时,增加难以破解的随机性。目标:PKCS1 v1.5填充最早用于RSA加密,它的目标是提供基本的数据完整性和安全性,以及与旧版RSA标准的兼容性。目标:PSS填充是为数字签名设计的,其主要目标是提供更高的安全性和抵御不同类型的攻击,如强力填充攻击。原创 2023-09-10 17:10:32 · 702 阅读 · 0 评论 -
openssl命令行:RSA的用法-- 终极版
这条与TA中的TEE_ALG_RSASSA_PKCS1_PSS_MGF1_SHA256 算法对应。4、基于 PKCS1v2.0 OAEP encryption padding的加密、解密。3、基于 PKCS1v2.1 PSS signature Pending的 签名、验签。3、基于 PKCS1v1.5 Pending的 签名、验签、加密、解密。这条也属于RSA PSS算法,但在TA中找不到与之对应的flag。原创 2023-09-10 15:33:17 · 257 阅读 · 0 评论 -
C语言实现:从sm2 PEM文件中提取公钥和私钥因子
以私钥提取为例,那么以上部分,如何用C语言实现呢?原创 2023-08-24 08:06:15 · 862 阅读 · 1 评论 -
C语言实现:从RSA PEM文件中提取私钥n/e/d/p/q/dp/dq/qp因子
即可实现从私钥PEM文件中提取私钥因子:n/e/d/p/q/dp/dq/qp.那么如何用C语言实现呢?如何在代码中实现呢?我们知道使用openssl命令行。原创 2023-08-24 07:50:20 · 320 阅读 · 0 评论 -
openssl命令行的使用(aes/rsa签名校验/rsa加密解密/hmac)
常用技巧如何编写一个二进制规律性的文件, 比如你可以编写一个"0123456789abcdef"的文本文件,记得删除换行符然后用ultraedit打开,ctrl+H就可以看到二进制文件,对应的0x30 0x31 0x32…或者使用xxd -i 1.txt查看AESopenssl enc -aes-128-cbc -in mingwen.data -K 00010203040506070809...原创 2020-04-28 10:04:52 · 3638 阅读 · 0 评论 -
RSA私钥pem转换成der, 在将der解析出n e d p q dp dq qp
1、网页实现https://the-x.cn/base64注意请去除-----BEGIN PRIVATE KEY-----和-----END PRIVATE KEY-----两行后再黏贴2、openssl命令行实现openssl base64 -d -in test_priv.pem -out 1.datauser1:~/work/crypto$openssl base64 -d -in test_priv.pem -out 1.datauser1:~/work/crypto$xxd -i原创 2020-05-14 13:49:12 · 4976 阅读 · 2 评论 -
python3中rsa(签名验签加密解密)aes(ecb cbc ctr)hmac的使用,以及unittest测试用
环境:在ubuntu14.04下,记得安装:sudo pip3 install pycrypto代码如下:===========================import base64from Crypto.Cipher import AESimport randomimport sysimport osclass Crypto():def __init__(self,aes...原创 2019-07-13 14:32:55 · 2874 阅读 · 0 评论 -
base64_encode和base64_decode的C语言实现
base64_encode和base64_decode的C语言实现方法一(笨方法):const char * base64char = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";char * base64_encode( const unsigned char * bindata, char * base64, int binlength ){ int i, j; unsigned char原创 2020-06-09 13:26:54 · 2566 阅读 · 0 评论 -
从rsa公钥中提取N和E
1、从rsa公钥中提取N和E–python实现#!/usr/bin/env python3from Crypto.PublicKey import RSApath = '<key file path here>'with open(path) as f: key = RSA.import_key(f.read()) print('e = %d' % key.e...原创 2020-04-11 09:09:41 · 7005 阅读 · 1 评论 -
python的aes加解密/rsa生成密钥对/rsa加解密/hmac加密
直接上代码```cimport base64from Crypto.Cipher import AESimport randomimport sysimport osimport hmacfrom Crypto.PublicKey import RSAfrom Crypto.Cipher import PKCS1_OAEPimport rsaimport binascii...原创 2020-05-07 11:45:59 · 1800 阅读 · 0 评论 -
CA证书概念介绍
CA, (Certificate Authority)CA认证,即电子认证服务, 是指为电子签名相关各方提供真实性、可靠性验证的活动。证书颁发机构(CA, Certificate Authority)即颁发数字证书的机构。是负责发放和管理数字证书的权威机构,并作为电子商务交易中受信任的第三方,承担公钥体系中公钥的合法性检验的责任。CA 也拥有一个证书(内含公钥和私钥)。网上的公众用户通过验证 CA 的签字从而信任 CA ,任何人都可以得到 CA 的证书(含公钥),用以验证它所签发的证书。如果用户想得原创 2020-12-14 15:45:22 · 2897 阅读 · 0 评论 -
[crypto]-10-openssl版本介绍
openssl官网openssl版本号规则openssl 1.0.1a 后面的字母变动表示:bug或安全漏洞的修复,不会增加新的feature;openssl 1.0.2 最后一个数字变动表示:新增了新的feature,并兼容以前的版本;而中间的数字变动后,此时source和binary可能都不兼容了.当前openssl最新的版本是:对于alpha和fips我们先不讨论,那么当前最新的版本号就是openssl-1.1.li那么openssl 1.1.1都支持哪些算法呢,可以通过openssl原创 2021-01-07 20:21:59 · 4808 阅读 · 1 评论 -
pkcs#11和Cryptoki的介绍
PKCS#11标准定义了与密码令牌(如硬件安全模块(HSM)和智能卡)的独立于平台的API,并将API本身命名为“Cryptoki”(来自“加密令牌接口”,发音为“crypto-key” - 但是“PKCS#11”通常用于指代API以及定义它的标准)。 API定义了最常用的加密对像类型(RSA密钥,X.509证书,DES / 三重DES密钥等)以及使用,创建/生成,修改和删除这些对象所需的所有功能。在密码系统中,PKCS#11是公钥加密标准(PKCS, Public-Key Cryptography St原创 2022-01-01 10:20:39 · 3198 阅读 · 0 评论 -
可信平台模块(TPM)概念介绍
可信平台模块(Trusted Platform Module,缩写:TPM),是一项安全密码处理器的国际标准,旨在使用设备中集成的专用微控制器(安全硬件)处理设备中的加密密钥。 TPM的技术规范由称为可信计算组织(TCG)的资讯业联合体编写。国际标准化组织(ISO)和国际电工委员会(IEC)已于2009年将规范标准化为ISO/IEC 11889[1]。TCG持续修订TPM规范。 2011年3月3日发布了TPM规范版本1.2版本修订116[2],而TPM规范版本2.0版本的1.07修订版本已于2014年3月原创 2021-10-20 09:59:17 · 4393 阅读 · 0 评论 -
公钥密码学标准(Public Key Cryptography Standards, PKCS)
公钥加密标准(Public Key Cryptography Standards, PKCS),此一标准的设计与发布皆由RSA资讯安全公司( RSA Security LLC)所制定。RSA资讯安全公司旗下的RSA实验室为了发扬公开密钥技术的使用,便发展了一系列的公开金钥密码编译标准。只不过,虽然该标准具有相当大的象征性,也被资讯界的产业所认同;但是,若RSA公司认为有必要,这些标准的内容仍然可能会变动。所幸,这些变动并不大;此外,这几年RSA公司也与其他组织(比较知名的有IETF、PKIX)将标准的制定原创 2021-10-14 08:49:28 · 853 阅读 · 0 评论 -
mbedtls移植体验
1、下载mbedtls源码git clone https://github.com/ARMmbed/mbedtls.git2、下载程序编写的目标 (我自己的/通用的)git clone https://gitee.com/baron_zz/code_template.git3、拷贝native_c_template命名为mbedtls_testcp native_c_template mbedtls_test -r4、将mbedtls 中的libary、include目录拷贝到mbe原创 2022-01-03 14:51:39 · 1640 阅读 · 0 评论 -
X.509证书的介绍
1、X.509简介X.509是密码学里公钥证书的格式标准。X.509证书已应用在包括TLS/SSL在内的众多网络协议里,同时它也用在很多非在线应用场景里,比如电子签名服务。X.509证书里含有公钥、身份信息(比如网络主机名,组织的名称或个体名称等)和签名信息(可以是证书签发机构CA的签名,也可以是自签名)。X.509还附带了证书吊销列表和用于从最终对证书进行签名的证书签发机构直到最终可信点为止的证书合法性验证算法。X.509是ITU-T标准化部门基于他们之前的ASN.1定义的一套证书标准。2、证书组成原创 2021-10-15 14:47:01 · 3551 阅读 · 0 评论 -
openssl命令行:RSA密钥的Diffie-Hellman(DH)密钥交换
openssl genpkey -algorithm RSA -out client_private_key.pemopenssl rsa -in client_private_key.pem -pubout -out client_public_key.pemopenssl genpkey -algorithm RSA -out server_private_key.pemopenssl rsa -in server_private_key.pem -pubout -out server_public_k原创 2023-08-03 00:48:51 · 239 阅读 · 0 评论 -
基于RSA密钥的密钥交互协议
密钥协商算法用于在通信双方之间协商和生成共享密钥,以便在后续的通信过程中使用对称加密算法进行加密和解密。对称加密算法使用相同的密钥进行加密和解密,因此需要确保双方都拥有相同的共享密钥,而密钥协商算法就是用于生成这样的共享密钥。ECDH是一种基于椭圆曲线的密钥交换算法,它主要用于协商双方的共享密钥,而RSA是一种非对称加密算法,用于加密、解密和数字签名。请注意,RSA本身不是用于密钥协商的算法,但可以与其他密钥协商算法一起使用。:基于RSA算法的密钥交换方案,但由于性能和安全性的原因,通常不被广泛使用。原创 2023-08-03 00:45:06 · 267 阅读 · 0 评论 -
openssl命令行ECDH密钥协商算法
openssl ecparam -genkey -name prime256v1 -out client_private_key.pemopenssl ec -in client_private_key.pem -pubout -out client_public_key.pemopenssl ecparam -genkey -name prime256v1 -out server_private_key.pemopenssl ec -in server_private_key.pem -pubout -o原创 2023-08-03 00:37:59 · 299 阅读 · 0 评论 -
openssl ECC命令行:生成密钥加密解密签名验签
请注意,ECC加密在安全性和性能方面通常比传统的RSA算法更优越,尤其在资源受限的环境中。使用ECC算法时,请确保选择适当的曲线,如prime256v1(也称为secp256r1)。原创 2023-08-03 00:22:42 · 619 阅读 · 0 评论 -
openssl 命令行国密sm2的加密解密签名验签操作
原始文件为in,签名为in.sign,使用sha256做摘要后使用SM2算法验签,输出验签结果。签名文件为in,使用sha256做摘要后使用SM2算法签名,输出文件为in.sign。原创 2023-07-31 11:54:42 · 1703 阅读 · 0 评论 -
中国国密的 sm2 中,dsa_sm3, pke 和 kep 分别指什么
SM2作为国密算法标准的一部分,定义了基于椭圆曲线Discrete Logarithm Problem的公钥密码体制,包括了数字签名、密钥交换和公钥加密算法,形成了一套完整的公钥密码体系。kep 通过椭圆曲线密钥交换算法,双方可以协商一个双方都可以计算出来的共享密钥,用于后续通信的对称加密。dsa_sm3、pke和kep分别对应SM2体制中的数字签名、公钥加密和密钥交换三个关键应用场景。pke 通过对方的公钥对数据进行加密,对方用自己的私钥解密,实现数据的保密性。原创 2023-07-31 11:46:46 · 607 阅读 · 0 评论 -
openssl为什么从1.1跳跃到3.0,为什么没有2.0版本?
OpenSSL在版本号上从1.1跳跃到3.0是因为在其发展过程中发生了一些特定的情况和变化,导致开发团队做出了这样的决定。以下是一些可能的原因:历史背景:OpenSSL的版本号体系并不是连续递增的,而是根据项目的发展和变化进行调整。在过去的几个版本中,包括1.0.x系列,OpenSSL遇到了一些重大的安全漏洞和问题,这导致了对代码库的重大改进和修复。由于这些变化的复杂性和重要性,开发团队决定跳跃到3.0版本来突显这种巨大的变化。原创 2023-07-13 01:36:14 · 1420 阅读 · 0 评论 -
openssl源码编译输出库-guidance-傻瓜式教程
编译输出目标版本,例如使用Android NDK编译输出Android使用的32位的库。按照文档,配置好您上述解压出的NDK中的工具链路径,并加入PATH变量。3、请找到Notes for Android platforms文档。注意./Configure 后的参数,然后再敲击make即可。请下载Linux版本的Android NDK, 并完成解压。去查看,主要看这里的LIBS和SHLIBS中定义的目标。2、 请下载Linux版本的Android NDK。下载openssl源码。原创 2023-07-13 01:22:23 · 189 阅读 · 0 评论 -
openssl RSA的加密解密-签名验签
产生公私密钥对公钥加密、私钥解密私钥签名、公钥验签。原创 2023-07-11 16:42:13 · 209 阅读 · 0 评论 -
openssl国密SM4命令行-加解密算法强化训练
【代码】openssl国密SM4命令行-加解密算法强化训练。原创 2023-07-11 13:58:51 · 451 阅读 · 0 评论