鱼C论坛

 找回密码
 立即注册
查看: 2691|回复: 10

[已解决]希尔密码

[复制链接]
发表于 2018-10-11 13:49:47 From FishC Mobile | 显示全部楼层 |阅读模式
20鱼币
跪求帮助,做不来啊,急求急求
最佳答案
2018-10-11 13:49:48
酴醾 发表于 2018-10-12 07:02
就是不知道答案啊 那个 你的逆矩阵是多少
import numpy as np

a = np.array([[1,2,1,2,1],
              [1,1,1,2,1],
              [2,2,1,2,1],
              [2,1,2,3,1],
              [2,1,1,2,2]])
a = np.linalg.inv(a)
a2 = np.round(a)

keyset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
msg = "EGWYQ"

b =[]
for each in msg:
      b.append([keyset.index(each)])
b = np.array(b)
c = np.dot(a2,b)
d = [int(x)%26 for x in c]
e = "".join(keyset[x] for x in d)
print(e)
SYCYS
IMG_20181011_134923.jpg
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-11 13:49:48 | 显示全部楼层    本楼为最佳答案   
酴醾 发表于 2018-10-12 07:02
就是不知道答案啊 那个 你的逆矩阵是多少
import numpy as np

a = np.array([[1,2,1,2,1],
              [1,1,1,2,1],
              [2,2,1,2,1],
              [2,1,2,3,1],
              [2,1,1,2,2]])
a = np.linalg.inv(a)
a2 = np.round(a)

keyset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
msg = "EGWYQ"

b =[]
for each in msg:
      b.append([keyset.index(each)])
b = np.array(b)
c = np.dot(a2,b)
d = [int(x)%26 for x in c]
e = "".join(keyset[x] for x in d)
print(e)
SYCYS
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-11 16:47:05 | 显示全部楼层
不知道正确否,思路应该对,或许是反运算
import numpy as np

a = np.array([[1,2,1,2,1],
              [1,1,1,2,1],
              [2,2,1,2,1],
              [2,1,2,3,1],
              [2,1,1,2,2]])

keyset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

Key = "EGWYQ"

b =[]
for each in Key:
      b.append([keyset.index(each)])
b = np.array(b)
c = np.dot(a,b)
d = [int(x)%26 for x in c]
e = "".join(keyset[x] for x in d)
>>> e
'YSCQM'
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-11 23:04:26 | 显示全部楼层
claws0n 发表于 2018-10-11 16:47
不知道正确否,思路应该对,或许是反运算

不好意思 不对啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-11 23:15:43 | 显示全部楼层
很高大上,可是我看不懂
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-11 23:16:46 | 显示全部楼层
酴醾 发表于 2018-10-11 23:04
不好意思 不对啊

答案是啥?也许要的是反运算
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-11 23:48:43 | 显示全部楼层
酴醾 发表于 2018-10-11 23:04
不好意思 不对啊
import numpy as np

a = np.array([[1,2,1,2,1],
              [1,1,1,2,1],
              [2,2,1,2,1],
              [2,1,2,3,1],
              [2,1,1,2,2]])
a = np.linalg.inv(a)
keyset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
msg = "EGWYQ"

b =[]
for each in msg:
      b.append([keyset.index(each)])
b = np.array(b)
c = np.dot(a,b)
d = [int(x)%26 for x in c]
e = "".join(keyset[x] for x in d)
print(e)
SYBZS
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-12 07:02:29 | 显示全部楼层

就是不知道答案啊 那个 你的逆矩阵是多少
QQ截图20181012070027.png
QQ截图20181012070138.png
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-12 13:35:57 | 显示全部楼层
酴醾 发表于 2018-10-12 07:02
就是不知道答案啊 那个 你的逆矩阵是多少

逆矩阵 a = np.linalg.inv(a)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2018-10-12 15:45:05 | 显示全部楼层

感谢大佬,萌萌哒
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2018-10-12 16:29:43 From FishC Mobile | 显示全部楼层
酴醾 发表于 2018-10-12 15:45
感谢大佬,萌萌哒

^_^ 把逆矩阵打印出来后发现精度问题,round 进位解决
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-16 18:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表