写了一个 RSA + Base64 加密的程序,要不来试试?

2018-11-20 15:58:08 +08:00
 waterlaw

和同学在 TIM 上聊天, 他说 TIM 记录被 Boss 查水表了, 心想现在聊天软件都这么不安全了, 想到非对称加密, 又由于 TIM 文字的限制, 故使用 RSA + Base64 双重加密。 这里我有一个问题, 平时在阿里云使用 ssh 生成密钥对的时候, 在 ~/.ssh 目录下有一个 authorized_keys 的文件, 格式是

ssh-rsa xxxx xxx@DESKTOP

这个是有特定格式么? 如果我也采用类似文件来记录别人给我的公钥, 那该怎么解析(考虑换行空格等, 主要是不同编辑器的换行不大一样, 如一个公钥在记事本中是单行但用 Nodepad++ 打开却变为多行)。

使用方法:

rsatool encode "hello"

在 C:\Users[Her/His User Name].ssh 生成公钥, 把公钥拷给别人, 对方需在 .ssh 下新建 pub\YOUR_USER_NAME 目录, 将你给的秘钥复制到这里,/doge, 要是像 authorized_keys 那样管理文件就好了, 建个啥目录。

对方加密

rsatool encode "hello" -u YOUR_USER_NAME

你用私钥解密

rsatool decode '加密后的数据'

其实 V2 朋友喜欢使用 Base64 加密邮箱和微信号码的方式很简单就知道明文了, 使用 RSA 可以让对方以密文的方式传输数据, 当然明文只有你自己知道。

PS:

闲来无事,毫无技术含量, 主要用 pyinstaller 打包 python 脚本, 欢迎各位来喷。

github

5032 次点击
所在节点    程序员
32 条回复
Yanni0507
2018-11-20 17:54:11 +08:00
@jorneyr 是哦,忘了这茬了,谢谢!
Yanni0507
2018-11-20 18:04:49 +08:00
@waterlaw
现成方案是有的,对称加密有 SM1,SM4,不对称加密有 SM2,摘要有 SM3 ;
OpenSSL v1.1.1 里面是有 SM2,SM3,SM4 可以用的;
RSA 算法核心简单,唯一,区别只在于密钥长度。ECC 在算法上相对复杂,曲线的选择和安全性比较是很麻烦的,所以很难统一意见,形成标准,所以推广比较慢,不过国内也有很多地方已经在应用了
t6attack
2018-11-20 18:07:13 +08:00
@37Y37 非对称加密的作用,可以用简单的语言描述下:
一个偷比特币钱包的木马。公钥包含在程序中,然后可以把加密的结果大摇大摆的发到公共网页上。公钥、加密密文全世界可见。但全世界只有作者能从中还原出钱包。
Yanni0507
2018-11-20 18:07:36 +08:00
@ZombieMisaka
按这个思路走下去最终可能会发现自己就是实现了一个 ssl 协议……
lululau
2018-11-20 18:10:45 +08:00
5L 正解,PGP/GPG,傻瓜一点的 Keybase
t6attack
2018-11-20 18:39:10 +08:00
php 写法
<?php
//演示密钥 公钥
$pubKey = "-----BEGIN PUBLIC KEY-----
MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDtSYK/cEu44hRH9FPYL+OkltL1
LULkj/2BHaVnq/oNpI2YSCBlhDYlbBTdtIe8hrxM/FzddvsmLYyqvfJkWPs7hDuu
9OMPRrtZDN0dELiCVhUl3B1i/HIdP39yseU4//zjiw85Bn6cX9SVfwBBl85uQjsT
P5rto2YoA2TgAe1ujQIDAQAB
-----END PUBLIC KEY-----";

//演示密钥 私钥
$privKey = "-----BEGIN RSA PRIVATE KEY-----
MIICXAIBAAKBgQDtSYK/cEu44hRH9FPYL+OkltL1LULkj/2BHaVnq/oNpI2YSCBl
hDYlbBTdtIe8hrxM/FzddvsmLYyqvfJkWPs7hDuu9OMPRrtZDN0dELiCVhUl3B1i
/HIdP39yseU4//zjiw85Bn6cX9SVfwBBl85uQjsTP5rto2YoA2TgAe1ujQIDAQAB
AoGAEcyV1i5iP7gVtWAKegj9lncJ1AJVJjf22ByVL7WiyCszw9yFMZg9R4lX91l3
ZRjmPxAfFy25oR+Bkb011XknPyaqL7LSjQABU2jpFoyclAy9rWPhnn5G8Xwvqz8V
+i6wm5UP2yPTpCbxqwYo6/RgdkKfVQ4DLep3L7R0sbfgaTECQQD914iokrHAP014
S+r8WKV5GiZ121rOsiGvjuvvIHatLIzeXHpwL04T8QhCcvKDdypT3x4VFg3lVLrf
OsmbYSp7AkEA703yYQbYSfTjrb7XYX2deLLQqMHN3DrkRy7WZWMAJ1edaNJlPkM5
v5vLUZfScuMa8ZvsI6IKJl5iVA1v8IoglwJBALqx8B/TrIoxxL+qTo0Egcec9RaP
m60UFHRzkJFSdhaOApl0uNST5kACccm1kyof1fDT0+M8UkIOXFbcfPUbtMsCQDtb
mkN27y9pDxCJxeLoxaaqtBcn+2glM3p0o7mCVQdtNB5MEdDf2/MrMcOLZSgaLRTB
GFG+X8Ykoz82Fg4UNQECQGS/gykmpWt3zdRh4rgkgFZ3BBrVUeDIphvwvrvvihIi
+FyROFWU9yQznu46djdeRlwaBhieFaN1nFsI5h3UMFo=
-----END RSA PRIVATE KEY-----";

//测试数据
$data = "test data 123456789";

//公钥加密
openssl_public_encrypt($data, $encryptData, $pubKey);
$encryptData = base64_encode($encryptData);
echo $encryptData;

echo "\n";

//私钥解密
$encryptData = base64_decode($encryptData);
openssl_private_decrypt($encryptData, $decryptData, $privKey);
echo $decryptData;
?>
ytmsdy
2018-11-20 18:49:24 +08:00
base64 不是加密算法!
ETiV
2018-11-20 18:56:12 +08:00
问题的根源难道不是“用 TIM ”吗

聊 boss 不喜欢看到的内容的时候,别用 TIM 不就行了…
sunny352787
2018-11-20 18:59:07 +08:00
...为啥不让 TIM 走 SS 代理呢?
Suzutan
2018-11-20 19:03:25 +08:00
要是能直接以 ntrqq 那种方式实现就好了,省的手动复制粘贴(
mmdsun
2018-11-20 19:10:01 +08:00
警告⚠。小心被查水表容易引起公安调查。因为文字加密
Koishi
2018-12-03 04:34:41 +08:00
@whoami9894 PCQQ 的协议一直都被摸得光光的... 随便去搜搜 PCQQ 机器人就能找到
不过 ECDH 的密钥协商可以防止中间人攻击,Boss 无法通过你发给 tx 的数据解出内容

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/509661

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX