V2EX hifumi
 hifumi 最近的时间轴更新
hifumi

hifumi

V2EX 第 338723 号会员,加入于 2018-08-05 22:33:50 +08:00
hifumi 最近回复了
2022-04-30 12:33:34 +08:00
回复了 cncmmdwl 创建的主题 MySQL mysql 有什么类似 rsa 的加密手段么?
MySQL 本身肯定是不支持类似功能的,当然也可以用存储过程来实现我刚刚发的 demo 的逻辑
2022-04-30 12:31:36 +08:00
回复了 cncmmdwl 创建的主题 MySQL mysql 有什么类似 rsa 的加密手段么?
这个需求还是挺简单的,只要 RSA 加密时你不加盐值就可以了呀,RSA 就是一个乘方取模运算,下面的实现支持加密、验证和解密,密钥长度可以改,只要密码比密钥短就行了(如果需要支持密码比密钥长也可以修改一下下面的 demo ,实现分组加密)

```
from Cryptodome.PublicKey import RSA


def encrypt(public_key, password):
password = int.from_bytes(password, byteorder='big')
encrypted_password = pow(password, public_key.e, public_key.n)
return encrypted_password


def decrypt(private_key, encrypted_password, length):
decrypted = pow(encrypted_password, private_key.d, private_key.n).to_bytes(byteorder='big', length=length)
return decrypted


def verify_password(public_key, encrypted_password, password_to_be_verified):
return encrypted_password == encrypt(public_key, password_to_be_verified)


if __name__ == "__main__":
ras_key_length = 2 ** 10
private = RSA.generate(bits=ras_key_length)
public = private.publickey()

original_password = b"passwordpaordpasswordpasswordpasswordpasswordpasswordpasswordpasrdpasswordpasswordpassword"

print("Original password:", original_password)
encrypted = encrypt(public, original_password)

print("Encrypted password:", hex(encrypted))
print("Verification result:", verify_password(public, encrypted, original_password))

decrypted = decrypt(private, encrypted, ras_key_length // 8)
print("Decrypted password:", decrypted)
```

运行结果如下
```
Original password: b'passwordpaordpasswordpasswordpasswordpasswordpasswordpasswordpasrdpasswordpasswordpassword'
Encrypted password: 0x68334196df3d5c177e55e102f939ca2f0b2275e774159f0814921440161e5aad4e54076d13039f74733068dbad1d7c69e433a21b78f4ad485110bad0d45ff9b1ad5cf71a24ae16f14e53cd4b7f3d021f3a8b3e911f493da1339918c6e7bd9f23ef0f876a2142fd7f3de4556f64a7b12cb230f0c06a57571b6ad6ee1bfef85731
Verification result: True
Decrypted password: b'\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00passwordpaordpasswordpasswordpasswordpasswordpasswordpasswordpasrdpasswordpasswordpassword'
```
2020-01-02 14:02:36 +08:00
回复了 sdjl 创建的主题 Nintendo Switch 国行 switch 能不能继承海外版存档?
@sdjl 这没人知道, 因为国行塞尔达还没上市
2020-01-02 08:42:35 +08:00
回复了 robolwq 创建的主题 程序员 2020 年了,你的网站支持 http2 了么
@puilu Let's Encrypt 是永久免费的啊, 而且有官方提供的自动续期脚本
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     870 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 16ms UTC 20:13 PVG 04:13 LAX 13:13 JFK 16:13
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86