学习编程中的Ben 发表于 2023-8-10 21:53:56

文件加密助手V3.0强势回归~鱼币~~~

本帖最后由 学习编程中的Ben 于 2024-2-29 19:41 编辑

文件管理器 + 私密内容加密器V3.0
https://fishc.com.cn/static/image/hrline/1.gifhttps://fishc.com.cn/static/image/hrline/1.gif

嘿嘿嘿,亲爱的鱼油们!时隔大概5个月,我的杰作 文件管理器 + 私密内容加密器 又重新回归啦~

上一次的作品中, dolly_yos2 这位鱼油指出:
来看一看,楼主的描述很吓人
所以说不要再把 base64 编码当作加密了啊!
base64 没有任何保护内容的能力,只是一种编码转换方式,不提供任何安全性
建议在折腾帐号登录服务器这样难以判断究竟有多少作用、能否起到效果的功能之前,最好先将最初的目标功能实现好
加密器怎么不能实现正规加密呢?于是,它的第三个版本就此出现,相比前两个,增加了一大截功能哦~

新增功能:

[*]RSA加密与解密(一种正规加密方式)
[*]可以自动刷新的行号
[*]切换软件主题色


看了介绍,大家一定对这个东西很感兴趣了吧~ 那就让我们进入正题吧!


1.效果展示

主界面:



菜单-->功能:



加密界面:



切换主题:




2.安装所需的库

为了防止被 @tommyyu @陈尚涵 这两个大佬说比较水,就简略一点啦~

这次要安装的库有点多,而且用几个容易安装失败,大家请耐心按照步骤安装哈{:10_275:}
要安装的库有:
[*]ttkbootstrap
[*]pyperclip
[*]logging
[*]Crypto
pip install ttkbootstrap
pip install pyperclip
pip install logging
pip install Crypto

如果先要安装的快一点,那可以在以上语句末尾加上{:10_309:} :
-i https://pypi.tuna.tsinghua.edu.cn/simple


3.RSA加密解密详解
一、RSA加密的特点及其原理

      特点: RSA加密 是非对称加密非常著名的一种加密算法,何为非对称加密呢?
非对称加密
非对称加密算法中,有两个密钥:公钥和私钥。它们是一对,如果用公钥进行加密,只有用对应的私钥才能解密;如果用私钥进行加密,只有用对应的公钥才能解密。
非对称加密算法实现机密信息的交换过程为:甲方生成一对密钥并将其中一个作为公钥向其他方公开;得到该公钥的乙方使用该密钥对机密信息进行加密后发送给甲方;甲方再用自己的另一个专用密钥对加密后的信息进行解密。
      
        它的原理其实很简单, RSA加密算法 本身基于一个挺简单的知识:
                给出两个素数,将它们相乘,然后给出它们的乘积.
                通过他们的乘积,得到这两个素数是极为困难的,所以RSA加密挺可靠的{:10_279:}
                但是,如果能够解决位数极大的整数(比如几百位的整数)分解的快速方法,那么 RSA 算法将————轻易被破解。       
       
        不过,这实现并不简单,所以——放下心吧{:10_264:}


二、公钥和私钥的生成

        首先呢,我们要准备两个大大的素数——一定要够大啊!,这里设他们为 p 和 q {:10_330:}
        这俩素数的位数越多就越难破解,所以很多地方使用RSA加密算法都会将其转换为二进制,增加其破解难度!
        我的代码中,就是将其转换为了1024位的二进制数,不过大部分操作都由 Crypto 这个库来实现的哟

        2)设 n = p * q
      3)计算 m = (p - 1) * (q - 1), 这里的 m 为 n 的 欧拉函数 ,想必很多鱼油不太了解欧拉函数,所以在此贴心附上讲解链接:https://oi-wiki.org/math/number-theory/euler/
             PS:其实我不建议大家去理解 欧拉函数,因为,真的不容易懂,你只要了解他的定义就行了,别钻进去太深
      3)找到一个数 e ,e满足 1 < e < m,e 与 m 互质
        4)计算私钥d,计算 e 对于 m 的模反元素 d 。d 应满足:e * d ≡ 1 (mod m),就是 e 和 d 的乘积对 m 取余的结果为1
      5)好啦,公钥和私钥出现了啦:(n, e) 为公钥,(n, d) 为私钥
       

三、加密
        设要加密的内容为 X ,我们需要用公钥(上文的n, e)进行加密( X 要先转成数字形式,可以通过 ASCII码 或者 unicode 值), 再幂运算,然后取模计算出密文,其中 Y 就是密文:


四、解密
        与加密类似,不过用的是私钥(上文的n, d).


五、关于程序的密钥
        大家用我的程序进行 RSA加密 后,打开保存的密钥文件,会发现其中的内容并非数字,而是一串由字母、数字、符号组成的奇怪字符串!!!这是为什么呢?{:10_295:}
      **** Hidden Message *****


注:部分内容参考他人文章,因为忘了


4.完整代码
VIP用户请自觉,可别白嫖啊~{:10_275:}
**** Hidden Message *****

评个分再走呗~{:10_297:}

@liuhongrun2022 @唐舞麟 @高山 @Ewan-Ahiouy @歌者文明清理员 @不二如是 @sfqxx @python爱好者. @Mike_python小

紫迹 发表于 2023-8-15 18:31:53

紫迹 发表于 2023-8-15 18:23
好的,是直接把密文内容粘贴到软件上,然后解密就行吗?

我试了一下,必须同时保存密钥和密文文件,然后再把密文内容用记事本打开复制内容到软件上,再上传密钥文件才能解密。如果只保存密钥文件,然后直接复制软件生成的密文内容而不保存文件,把密文内容粘贴到软件上面并上传密钥文件,则无法解密{:10_277:}

学习编程中的Ben 发表于 2023-8-15 18:33:30

紫迹 发表于 2023-8-15 18:31
我试了一下,必须同时保存密钥和密文文件,然后再把密文内容用记事本打开复制内容到软件上,再上传密钥文 ...

我这个文件菜单栏第一个 文件 下面有一个打开功能,可以直接打开密文{:10_277:}
我这个文件本来就是一个记事本啊

学习编程中的Ben 发表于 2023-8-10 21:57:43

@sfqxx @isdkz @Mike_python小 @zhangjinxuan

学习编程中的Ben 发表于 2023-8-10 22:00:31

@青出于蓝 @香蕉那个不拿拿 @编程追风梦

学习编程中的Ben 发表于 2023-8-10 22:01:07

@陶远航

梦想护卫舰官方 发表于 2023-8-10 22:13:24

支持~

sfqxx 发表于 2023-8-10 22:14:04

支持

学习编程中的Ben 发表于 2023-8-10 22:16:22

sfqxx 发表于 2023-8-10 22:14
支持

评分呗~{:10_254:}

ba21 发表于 2023-8-10 22:17:18

{:10_275:}

学习编程中的Ben 发表于 2023-8-10 22:17:51

ba21 发表于 2023-8-10 22:17


不是你评分啊QAQ

学习编程中的Ben 发表于 2023-8-10 22:20:52

ba21 发表于 2023-8-10 22:17


谢谢评分啦~我睡啦~

歌者文明清理员 发表于 2023-8-10 22:37:46

qpzc

歌者文明清理员 发表于 2023-8-10 22:38:34

支持

liuhongrun2022 发表于 2023-8-11 08:19:24

ba21 发表于 2023-8-10 22:17


资深鱼油3可以评5贡献的吗

liuhongrun2022 发表于 2023-8-11 08:19:39

qp

liuhongrun2022 发表于 2023-8-11 08:24:42

楼主可以申请精华了

cjjJasonchen 发表于 2023-8-11 08:41:05

智齿智齿!!!

JasonChencCjj 发表于 2023-8-11 08:41:44

顶上去!顶上去!!{:10_257:}

wk012233 发表于 2023-8-11 08:45:56

支持

kerln888 发表于 2023-8-11 08:55:18

{:10_279:}{:10_279:}{:10_279:}

kerln888 发表于 2023-8-11 08:56:44

{:10_266:}{:10_266:}{:10_266:}
页: [1] 2 3 4 5 6
查看完整版本: 文件加密助手V3.0强势回归~鱼币~~~