问题标题: 承诺寒假结束前发布酷町平台上的加密数据存储 密码学算法--C++实现(最后一帖)

0
0
包思远
包思远
新手启示者
新手启示者

对称加密算法:SA加密算法(已实现)      等

密钥交换算法:DH密钥交换算法(没实现好,因特殊需求不能使用大数库,实现较为困难)    ECDH密钥交换算法(实现过于复杂,不打算实现)

非对称加密算法:RSA加密算法(未实现)     等

包思远在2024-08-28 08:53:42追加了内容

今天是开学前的最后一天了,此帖在开学前可能并不会结(大概率是要等到寒假才能结了)

包思远在2024-08-28 16:36:18追加了内容

DH密钥算法的实现也估计要等到寒假了

包思远在2024-08-31 17:56:57追加了内容

终于回来了

包思远在2024-10-14 18:57:57追加了内容

高中数学106还班级第3,年级前4%~5%,本来以为我炸了,结果一看排名别人炸的比我还惨

包思远在2024-10-24 20:10:32追加了内容

包思远在2024-10-24 20:12:45追加了内容

百度的彩蛋,在百度首页F12就能看到

包思远在2024-10-24 20:15:26追加了内容

才发现今天是10.24程序员节

包思远在2024-10-25 21:38:40追加了内容

精准的洛谷运势:

我们理论上周五6:00放假,周日6:30到校,实际上周五6:30放假,周日2:00到校,除去睡觉时间基本就一天出头的假期,还有一堆课、一场考试,把这些时间再除去,连写作业的时间都不够,简直就是“忌:放假    就放一天,全是作业”!!!

我上午还没注意到,晚上一看,立刻惊了!

包思远在2024-11-09 18:02:46追加了内容

承诺寒假结束前发布酷町平台上的加密数据存储

 

正在研究数据交互的相关问题


0
0
0
谭若依
谭若依
高级守护
高级守护

我上次运势大凶,校选正好没通过

0
包思远
包思远
新手启示者
新手启示者

关键时刻看上去JS靠谱些

0
包思远
包思远
新手启示者
新手启示者

太NB了!C++实现的一超过9位就崩溃

0
陈天宇
陈天宇
资深守护
资深守护

厉害‼‼‼‼‼‼‼‼‼‼(虽然我看不懂)

0
包思远
包思远
新手启示者
新手启示者

浏览器在线运行结果:

nodejs运行结果:

> // 生成大素数 p 和生成元 g
undefined
> const p = BigInt('100000000000000000007'); // 例子中的素数 p
undefined
> const g = BigInt('2');  // 例子中的生成元 g
undefined
>
> // 生成私钥
undefined
> function generatePrivateKey() {
...     return BigInt(Math.floor(Math.random() * 1000)); // 随机生成私钥
... }
undefined
>
> // 计算公钥
undefined
> function calculatePublicKey(privateKey) {
...     return g ** privateKey % p;
... }
undefined
>
> // 计算共享密钥
undefined
> function calculateSharedKey(otherPublicKey, privateKey) {
...     return otherPublicKey ** privateKey % p;
... }
undefined
>
> // Alice 的过程
undefined
> const alicePrivateKey = generatePrivateKey();
undefined
> const alicePublicKey = calculatePublicKey(alicePrivateKey);
undefined
>
> // Bob 的过程
undefined
> const bobPrivateKey = generatePrivateKey();
undefined
> const bobPublicKey = calculatePublicKey(bobPrivateKey);
undefined
>
> // Alice 和 Bob 交换公钥并计算共享密钥
undefined
> const aliceSharedKey = calculateSharedKey(bobPublicKey, alicePrivateKey);
undefined
> const bobSharedKey = calculateSharedKey(alicePublicKey, bobPrivateKey);
undefined
>
> console.log(`Alice's Public Key: ${alicePublicKey}`);
Alice's Public Key: 84536579591929060332
undefined
> console.log(`Bob's Public Key: ${bobPublicKey}`);
Bob's Public Key: 62597023467579856890
undefined
> console.log(`Alice's Shared Key: ${aliceSharedKey}`);
Alice's Shared Key: 58850604933104455645
undefined
> console.log(`Bob's Shared Key: ${bobSharedKey}`);
Bob's Shared Key: 58850604933104455645
undefined
>
> // 验证共享密钥一致性
undefined
> console.log(`Shared keys match: ${aliceSharedKey === bobSharedKey}`);
Shared keys match: true
undefined

理论上对于我们普通人员,20位的共享密钥已经足够安全了(毕竟执行10^8次运算要1秒,10^20次计算要3000万年才能计算完【普通个人电脑,不适用多个计算机并行计算或用超级计算机或个人电脑使用多线程并行计算的情况下】,证明如下:)

0
0
0
0
0
0
0
0
0
0
我要回答