密码学常用网站与解密脚本

一.常见网站

①okk密码等趣味解密网站
趣味密码解密
②栅栏密码解密
典型混乱的密码时且给了数字对应–>即为栅栏密码
栅栏密码
典型的网站解密
16进制转字符串
base64解密
base64解密
⑥解方程网站
三元一次方程
一元三次方程
一元二次方程
⑦pythonascii码先减4在运行类
\u8BF7类码转换思路
char码对应转换
MD5积累库
11二维码解码
12.哈希值解密
13.javascript在线解压缩
14.在线Android反编译工具
15.jsfuck加密
16.js密文

二.解密脚本

需要的环境
rsa密钥加解密的
在线分解素数的
http://www.factordb.com/index.php
http://www.atool.org/quality_factor.php

1.安装gmpy2-->公钥私钥解密的
https://blog.csdn.net/wanzt123/article/details/71036184
 

import base64
 
 
text = input("请输入题目密文")
text1=''
for i in text:
    t=chr(ord(i)-4)
    text1+=t
    
print(base64.b64decode(text1))

直接减ascii码类

#! /usr/bin/env python3
# -*- coding: UTF-8 -*-
 
 
a = "gndk€rlqhmtkwwp}z"
i = 0
flag = ''
while i < len(a):
    num = ord(a[i])-(i+1)
    flag+=chr(num)
    i+=1
 
 
print(flag)

④进制类典型给一串数字类

#如-->即16进制
636A56355279427363446C4A49454A7154534230526D6843 56445A31614342354E326C4B4946467A5769426961453067
#最后的密码是用键盘围起来的

分解N攻击需要的脚本工具
脚本
1.用两个质数和一个指数去求另外一个指数值

import gmpy2
p = gmpy2.mpz(18443)#初始化大整数
q = gmpy2.mpz(49891)
e = gmpy2.mpz(19)
phi_n = (p-1)*(q-1)
d = gmpy2.invert(e,phi_n)#invert(x,m)返回y使得x * y == 1 modulo m,如果不存在y,则返回0
print("p=%s,q=%s,e=%s"%(p,q,e))
print("d is:\n%s"%d)

2.已知其他所有变量值,解明文的方法

#求明文
import gmpy2
n = 920139713
d = 96849619
c = """
704796792
752211152
274704164
18414022
368270835
483295235
263072905
459788476
483295235
459788476
663551792
475206804
459788476
428313374
475206804
459788476
425392137
704796792
458265677
341524652
483295235
534149509
425392137
428313374
425392137
341524652
458265677
263072905
483295235
828509797
341524652
425392137
475206804
428313374
483295235
475206804
459788476
306220148
"""
result = ""
c_list = c.split()
#print(c_list)
for i in c_list:
    result += chr(pow(int(i),d,n))
print(result)

⑤欧几里得算法破解密文脚本
分解n1和n2脚本

def gcd(a, b):
	if a < b:
    	a, b = b, a
	while b != 0:
    	temp = a % b
     	a = b
     	b = temp
def gcd_digui(a, b):
	if b != 0:
   		return a
	return gcd(b,a%b)
p = gcd(n1,n2)

欧拉获取私钥的

#coding:utf-8

p=47339860716
q=4511491
e=17

def egcd(a, b):
    #扩展欧几里德算法
    if a == 0:
        return (b, 0, 1)
    else:
        g, y, x = egcd(b % a, a)
        return (g, x - (b // a) * y, y)
def modinv(a, m):
    #d=modinv(e,(p-1)*(q-1))
    g, x, y = egcd(a, m)
    if g != 1:
       raise Exception('modular inverse does not exist')
    else:
       return x % m
	   
d = modinv(e,(p-1)*(q-1))
print("d=\n%s"%d)

RSA常用攻击方法

特定hash值MD5构造的脚本

#!coding:utf-8
import string
import hashlib
from random import Random
def random_str(randomlength=8):    #这里写的是8位字符的破解,在这题目中可以不下
    str = ''    
    chars = 'AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz0123456789'
    length = len(chars) - 1
    random = Random() 
    for i in range(randomlength):    
        str+=chars[random.randint(0, length)]
    return str

salt = 'SauTEQ=='.decode('base64')
while True:
    proof =  random_str(8).encode('base64')
    if hashlib.md5(salt+proof.decode('base64')).hexdigest().startswith("0000"):
        print proof
        print salt
        print proof.decode('base64')+salt
        print salt.encode('base64')
        print hashlib.md5(salt+proof.decode('base64')).hexdigest()
        break

三 进制转换的

①16转10进制

n=int(16进制)
hex(x)[2:][0:8]#10转16的,含义取[0,8]范围里面的,且从第二个开始取(前面的一个2表示)

②16进制转ascii码

from binascii import a2b_hex

h =input()
p1 = bytes(h,'utf-8')
p2 = a2b_hex(p1)
print(p2.decode())

四 代码在线运行

php在线运行
https://tool.lu/coderunner
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

goddemon

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值