联系电话

158-3118-0509

加解密教程:教你如何实现简单的数据加解密技巧

假定我们使用上述实例代码,把对应的功能移植到C/S两端,

那么一次完整的数据加密以及数据的传输参考流程如下:

记住一点,只要双方设置相同的keygen和同步码,那么密码机吐出来的密钥就是相同序列,

客户端发送每发送一个报文,就把自己的明文同步码一起发送给服务器,

服务器根据提前发送给客户端的keygen和同步码就可以实现解密操作,

虽然你可以看到明文的同步码,

但是还需要破解密码机算法、服务器下发的keygen密文。

加密软件原理

实现加密算法的主要问题是如何产生随机序列作为密钥。本例是借用库函数rand() 原型如下:

#include int rand(void);

函数rand() 虽然可以产生随机序列,但是每次产生的序列其实顺序是一样的。

#include  stdio.h main()  int i = 0;  for(i=0;i i++)   printf("%d ",rand());  putchar('\n');

运行结果如下:

peng@peng-virtual-machine:/mnt/hgfs/peng/rand/code$ ./a.out 1804289383 846930886 1681692777 1714636915 1957747793 424238335 719885386 1649760492 596516649 1189641421 peng@peng-virtual-machine:/mnt/hgfs/peng/rand/code$ ./a.out 1804289383 846930886 1681692777 1714636915 1957747793 424238335 719885386 1649760492 596516649 1189641421

要想每次都产生不一样的随机序列应该怎么办呢?需要借助srand()函数

void srand(unsigned int seed);

只需要通过该函数设置一个种子,那么产生的序列,就会完全不一样,

通常我们用time()返回值作为种子,

在此我们随便写入几个数据,来测试下该函数

#include  stdio.h main()  int i = 0;  srand(111);  for(i=0;i i++)   printf("%d ",rand());  putchar('\n');  srand(1111);  for(i=0;i i++)   printf("%d ",rand());  putchar('\n');

执行结果如下:

peng@peng-virtual-machine:/mnt/hgfs/peng/rand/code$ ./a.out 1629905861 708017477 1225010071 14444113 324837614 2112273117 1166384513 1539134273 1883039818 779189906 1383711924 882432674 1555165704 1334863495 1474679554 676796645 154721979 534868285 1892754119 100411878

可见输入不同的种子就会产生不同的序列。

函数原型如下:

图片本例原理比较简单,没有考虑太复杂的应用(比如多路密钥的管理)和数据安全性,

只阐述加解密的流程,仅作为学习理解加解密流程用,此种加密算法属于对称加密,相对比较简单,还是比较容易破解。

目前市场上都是由专业的公司和团队实现加解密功能。现在区块链常用的算法,如sha256,都是继承单向函数的设计思维,一个方向计算容易,反过来几乎不能破解,来保证安全。[来源:一口linux]

延伸阅读:密码三要素:明密文,密钥和算法。算法就是你说的“加密原理”。要解密,还要知道密钥。现代密码的基本要求之一就是:密码的安全性不依赖于加密方法的保密。也就是说,破译方即使知道加密方法和密文,不知道密钥也无法还原出明文。


”内鬼“员工越权访问,窃取机密数据被判刑


如何通过加密软件保护数据安全?


剖析数据加密算法以及加密系统架构


企业安装加密软件能防止重要文件被拷贝复制吗?


市面上的加密软件有哪些功能?加密软件选购攻略

热门标签

安固软件扫码咨询
扫码加微信咨询
安固软件,让企业更安全、让数据更有价值!
立即免费试用,或联系我们的专家,了解 安固软件 如何帮助您的团队更进一步