WriteUp
- RSA实践
- 一串奇怪的数
- 兔子你好
- NSCTF crypto200
涨姿势
- RSAROLL
- 凯撒和某某加密
RSA实践
解题思路
爆破爆破爆破
WriteUp
#include<iostream>
long long int get(long long int a,long long int b,long long int &x,long long int &y);
int main()
{
long long int a,b,x,y;
a = 473398607160;
b = 4511490;
get(17,a*b,x,y);
std::cout<<x<<std::endl;
return 0;
}
//扩展欧几里得算法
//返回a,b的最大公约数并求x,y使满足 ax + by = gcd(a,b)
long long int get(long long int a,long long int b,long long int &x,long long int &y)
{
if(b == 0)
{
x = 1;
y = 0;
return a;
}
else
{
long long int r = get(b,a%b,y,x);
y -= x*(a/b);
return r;
}
}
一串奇怪的数
解题思路
代码审计,逆向解密
WriteUp
首先审计加密代码,找出加密规律
#coding:utf-8 #加密代码
import hashlib
def md5(s):
return hashlib.md5(s).hexdigest()
def evalCrossTotal(strMd5):
r = 0
for i in strMd5:
r += int("0x%s" % i, 16)
return r
def encryptString(strString, strPasswd):
strPasswdMd5 = md5(strPasswd)
intMd5 = evalCrossTotal(strPasswdMd5)
r = []
for i in range(len(strString)):
r.append(
ord(strString