鱼C论坛

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

[已解决]希尔密码

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

  2. a = np.array([[1,2,1,2,1],
  3.               [1,1,1,2,1],
  4.               [2,2,1,2,1],
  5.               [2,1,2,3,1],
  6.               [2,1,1,2,2]])
  7. a = np.linalg.inv(a)
  8. a2 = np.round(a)

  9. keyset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  10. msg = "EGWYQ"

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

使用道具 举报

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

  2. a = np.array([[1,2,1,2,1],
  3.               [1,1,1,2,1],
  4.               [2,2,1,2,1],
  5.               [2,1,2,3,1],
  6.               [2,1,1,2,2]])
  7. a = np.linalg.inv(a)
  8. a2 = np.round(a)

  9. keyset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  10. msg = "EGWYQ"

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

使用道具 举报

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

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

  7. keyset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"

  8. Key = "EGWYQ"

  9. b =[]
  10. for each in Key:
  11.       b.append([keyset.index(each)])
  12. b = np.array(b)
  13. c = np.dot(a,b)
  14. d = [int(x)%26 for x in c]
  15. e = "".join(keyset[x] for x in d)
复制代码
  1. >>> e
  2. '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
不好意思 不对啊
  1. import numpy as np

  2. a = np.array([[1,2,1,2,1],
  3.               [1,1,1,2,1],
  4.               [2,2,1,2,1],
  5.               [2,1,2,3,1],
  6.               [2,1,1,2,2]])
  7. a = np.linalg.inv(a)
  8. keyset = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
  9. msg = "EGWYQ"

  10. b =[]
  11. for each in msg:
  12.       b.append([keyset.index(each)])
  13. b = np.array(b)
  14. c = np.dot(a,b)
  15. d = [int(x)%26 for x in c]
  16. e = "".join(keyset[x] for x in d)
  17. print(e)
复制代码
  1. 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-4-19 10:49

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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