- 博客(26)
- 资源 (2)
- 收藏
- 关注
原创 ECC算法与ECDSA签名、SM2签名、SM2加密、ElGamal加密的C/C++实现
【代码】ECC算法与ECDSA签名、SM2签名、SM2加密、ElGamal加密的C/C++实现。
2024-01-28 00:26:56
1510
原创 SM4算法的原理与C/C++实现
SM4算法是一种由中国国家密码管理局于2012年发布的对称块加密标准,主要用于信息安全领域,尤其在金融和物联网等关键领域有着广泛的应用。这种算法以其强大的安全性和较快的计算速度而著称,使用128位的密钥和32位的块大小进行数据加密,确保了数据传输和存储的安全性。:算法首先将用户提供的128位密钥通过密钥扩展算法扩展成32个轮密钥,这些轮密钥将用于加密过程中的每一轮操作。:在每一轮加密开始时,都会将数据块(当前状态)与相应的轮密钥进行异或操作,这一步是加密过程的第一步,也是实现加密的基础。
2024-01-27 23:10:13
3132
2
原创 DES算法的原理与C/C++实现
DES(数据加密标准)是一种历史悠久的对称加密算法,1977年被美国联邦信息处理标准制定为标准。尽管因为其56位的较短密钥长度而被视为过时,DES算法在密码学历史中仍占有重要地位。:这一步骤通过一个固定的置换表对输入的64位明文数据进行重新排列,目的是将数据打乱,为后续的加密过程做准备。:DES从用户提供的56位主密钥中生成16个48位的子密钥。这些子密钥将在后续的各轮加密过程中逐一使用。:每轮加密过程结束后,将数据的左右两部分交换,为下一轮迭代做准备。在最后一轮之后不进行交换。
2024-01-27 22:52:03
676
原创 AES算法的原理与C/C++实现
AES(高级加密标准,Advanced Encryption Standard)是一种广泛使用的对称密钥加密算法,旨在替代老旧的DES(数据加密标准)。AES由比利时密码学家文森特·瑞门(Vincent Rijmen)和乔安·戴门(Joan Daemen)设计,于2001年被美国国家标准与技术研究院(NIST)正式采纳为标准。AES是一个基于替代-置换网络的迭代算法,它支持多种长度的密钥和数据块(128、192和256位),但最常用的是128位的块大小。
2024-01-27 22:44:11
1271
原创 SHA-256算法的原理与C/C++实现
SHA-256 是一种加密哈希函数,旨在将任意大小的数据映射到一个固定大小的哈希值,通常是 256 位(32 字节)。它属于 SHA-2(安全哈希算法 2)家族,旨在提供更高的安全性。
2024-01-27 22:26:50
4329
2
原创 MD5算法的实现原理与C/C++实现
MD5(Message Digest Algorithm 5)是一种广泛使用的加密哈希函数,由罗纳德·李维斯特(Ronald Rivest)于1991年设计。MD5的目的是从任意长度的数据中产生一个128位(16字节)的哈希值,通常表示为32个十六进制字符。MD5的设计使其用于确保数据的完整性,常见于文件校验、数字签名等场景。:首先对消息进行填充,以使其长度(以位计)模512为448。填充始终以1开始,后跟0,直到满足长度要求。:在填充的消息后追加一个64位的长度字段,表示原始消息的长度(以位计)。
2024-01-27 22:23:04
3013
原创 SHA-1算法的原理与C/C++实现
SHA-1 是一种数据加密算法,该算法的思想是接收一段明文,然后以不可逆的方式将其转换为一段密文,这也可以简单理解为输入一串二进制代码并将它们转换为长度更短、位数固定的输出序列,即哈希值,也称为消息摘要或消息认证码。SHA-1算法输入消息的最大长度不超过 2^64 位,得到的输出是一个 160 位的消息摘要。输入以 512 位的数据包进行处理。SHA-1 是不可逆的,具有抗冲突性,并且具有良好的雪崩效应。
2024-01-27 21:56:31
1506
转载 环签名学习笔记
①一般的数字签名会暴露成员身份。②一般的匿名方式不能确定来自成员。③ 群签名中,如果被控制,成员的身份会被暴露。在传统的数字签名中,签名者使用自己的私钥对消息进行签名,然后其他人可以使用签名者的公钥验证签名的有效性。但是,这种方法会暴露签名者的身份信息。环签名通过引入"环"的概念来解决这个问题。当一个人使用环中的某个成员的私钥来签名时,其他人可以使用该成员的公钥和环签名来验证签名的有效性,但无法确定具体是哪个成员进行了签名。
2023-06-16 15:05:22
2249
转载 哈希函数学习笔记
哈希函数(Hash Function)是一公开函数,用于将任意长的消息M映射为较短的、固定长 度的一个值H(M),又称为散列函数、杂凑函数.我们称函数值H(M)为哈希值、杂凑值、杂凑码、 或消息摘要。杂凑值是消息中所有比特的函数,因此提供错误检测能力。消息中任何一个比特或者几个比特的改变都会造成杂凑值的改变。总结:密码学上安全的哈希函数H应该包含的性质:①对于任意的消息x,计算H(x)是容易的。②H是单向的③H是强抗碰撞的对于给定的哈希值h,试图找到满足H(x)=h的x。对于m位的哈希值,穷举的规模大约是2
2023-06-13 14:26:53
8349
原创 CDH(computational Diffie-Hellman)问题以及与离散对数、DDH问题的区别
以下是我关于CDH问题的笔记;CDH,离散对数问题、DDH的区别如下。
2022-07-31 16:41:37
1239
原创 计算机网络中的安全(一)网络安全的概念与加密原理
一、什么是网络安全1.机密性(confidentiality)2.报文完整性(message integrity)3.认证性(authentication)4.不可否认性(Non-repudiation)二、Alice-Bob1.Alice&Bob分别代表了什么?2.adversaries能做什么?三、加密原理1.密码学符号表示2.对称密码体制DES算法原理3.公开密钥密码体制RSA总结......
2022-07-29 16:18:08
1509
原创 操作系统中的共享内存和消息传递模型
一、共享内存系统(Shared memory system) 共享内存是进程间通信的基本模型。在共享内存系统中,在地址空间区域中,协作者通过建立共享内存区域来相互通信。共享内存的概念是在最快的进程间通信上发挥作用。共享内存的过程:如果进程想要发起通信并且它有一些数据要共享,那么在它的地址空间中建立共享内存区域。之后,另一个进程想要通信并尝试读取共享数据,并且必须将自己附加到启动进程的共享地址空间。二、消息传递(message passing)...
2022-04-18 18:00:25
1912
原创 内存和硬盘、磁盘的区别
计算机有两类存储器,一类是外部存储器,一类是内部存储器(内存)。1.内存(memory):内存由寄存器组成。内存是指短期数据的位置。存储器中的每个寄存器是一个存储位置。存储位置也称为内存位置。使用地址标识内存位置。内存可以存储的总位数就是它的容量。内存分为三种类型:主内存(main memory),辅助内存(secondary memory),缓存内存(cache)。内存与外存的比较:内存存储信息速度快,断电后存储内容全部丢失。外部存储器呢,主要是磁盘,它所存储...
2022-04-17 20:30:01
9904
3
原创 【网络安全】学习笔记 --02 安全通信协议
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档目录一、安全协议概述二、SSL/TLS1.SSL2.TLS三、握手协议未完待续一、安全协议概述安全协议的基石:通信技术、密码技术、安全机制和服务(机密性、完整性和真实性)、密钥的分发与交换等问题。TCP/IP协议栈:协议栈的封装过程:网络安全的层次结构:应用层安全:传输层安全:网络层安全:二、SSL/TLS ......
2022-03-24 17:49:27
7664
原创 Data Structure and STL 复习笔记(数据结构)
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录向量 vector 双端队列 deque 链表 list 队列 queue 容器适配器和堆栈 container adapter & stacks前言本文总结了笔者在数据结构课程中学到的常见的容器以及存储结构,希望对大家有所帮助~STL: standard template library, including list, vector and deque一、向量 vector..
2022-01-18 22:58:05
926
原创 【网络安全】学习笔记 --00
目录一、TCP/IP协议基础二、OSI安全体系结构三、主动攻击与被动攻击四、常见的网络安全的目标五、OSI与TCP/IP的区别网络安全的目标是要保证网络的硬件、软件能正常运行,然后要保证数据信息交换的安全。一、TCP/IP协议基础1.TCP/IP的具体含义从字面意义上讲,有人可能会认为 TCP/IP 是指 TCP 和 IP 两种协议。实际生活当中有时也确实就是指这两种协议。然而在很多情况下,它只是利用 IP 进行通信时所必须用到的协议群的统称。具体
2021-11-05 18:11:08
714
原创 【数据结构】-- C++怎样在单向链表尾部插入节点
template<class T>void ListTemp<T>::AddTail(const T& newData){ //please implement this Node* temp = new Node; Node* current = head; temp->data = newData; temp->next = NULL; if (head == NULL) { head = temp; } else { ..
2021-11-05 16:45:46
1744
原创 Java Basis--parameters,formatted output and mathematical expressions
1. Answer the questions (1) Will it affect compilation when the class name and file name are inconsistent? ① The file name saved by Java must be consistent with the class name; ②If there is only one class in the file, the file name must be ...
2021-09-16 19:41:35
135
原创 【Solidity智能合约基础】-- 基础运算与底层位运算
一、基础运算 一些加、减、乘、除、取余和平方等基础的运算,代码实现如下:pragma solidity ^0.4.0;contract math{ //int & uint uint numa=4; uint numb=2; //uint8 numc=2; function add(uint a,uint b)pure public returns(uint){ return a+b; ...
2021-09-14 17:46:11
730
原创 【solidity智能合约基础】节约gas的利器--view和pure
一、知识概览view和pure的使用方法:view是只有输入没有输出,pure是单纯的输入和输出。调用这两种函数时,均不消耗燃料。而对内存的状态进行改变时,需要消耗燃料。因此我们称view和pure是节约gas的利器。public是权限的标识符,如果不加说明,编译时默认是public,但是会警告甚至是错误(版本不同)。权限的标识符体现出封装的特点,类似于C++,但是也有不同,solidity的权限标识符包括四种--public(任何人都可以调用该函数,包括DApp的使用...
2021-08-24 00:34:57
9963
3
二叉查找树(二分搜索树)的C++方法实现
2022-01-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人