Crypto

  • ROT13编码
    ROT13(有时中间加了个连字符称作ROT-13) 是一种简易的替换式密码,凯撒加密的一种变体
  • 摩斯密码
    摩斯电码定义了包括:英文字母A-Z(大写)十进制数字0-9,以及简单的标点符号? / )- .
  • quoted-printable编码用于将非 ASCII 字符转换为 ASCII 字符,以便在电子邮件等文本传输中使用。
    1
    =E9=82=A3=E4=BD=A0=E4=B9=9F=E5=BE=88=E6=A3=92=E5=93=A6
  • Rabbit 开头部分通常为U2FsdGVkX1
    1
    U2FsdGVkX1/+ydnDPowGbjjJXhZxm2MP2AgI
  • 栅栏密码:所谓栅栏密码,就是把明文分成N个组,然后取出每组的第一个,每组的第二个。。接着按顺序排列得出密文
    题目:
    1
    2
    一只小羊跳过了栅栏,两只小样跳过了栅栏,一坨小羊跳过了栅栏…
    tn c0afsiwal kes,hwit1r g,npt ttessfu}ua u hmqik e {m, n huiouosarwCniibecesnren
    思路:
    1
    由于题中提到了栅栏,于是猜这段字符串使用了栅栏密码,去掉空格后一数发现字符串长度为71,因为71是一个素数,所以无法对其进行各很好的分组,所以猜测空格可能是计数的,再看字符串中有些字母中间空格不止一个,就更加肯定空格是计数的了,于是加上空格,字符串长度为85,而85的因子有5和17,于是乎我们就可以按5个一组或17个一组去试

buuctf 变异凯撒

1
2
3
4
5
6
7
str1 = "afZ_r9VYfScOeO_UL^RWUc"
str2 = list(str1)
str3 = ''
num = len(str2)
for i in range(0, num):
str3 = str3 + chr(ord(str2[i]) + 5 + i)
print(str3)

同余的一些性质

在一次RSA密钥对生成中,假设p=473398607161,q=4511491,e=17
求解出d作为flga提交

gmpy2.invert(a, n)
找出一个数b,使a * b 除以 n 的余数等于 1
101999966233
flag{d450209323a847c8d01c6be47c81811a}
在线素数分解因数
wget https://www.mpfr.org/mpfr-current/mpfr-4.2.1.tar.xz
tar -jxvf mpfr-4.2.1.tar.bz2 && cd mpfr-4.2.1

大帝的密码武器

1
2
3
公元前一百年,在罗马出生了一位对世界影响巨大的人物,他生前是罗马三巨头之一。他率先使用了一种简单的加密函,因此这种加密方法以他的名字命名。
以下密文被解开后可以获得一个有意义的单词:FRPHEVGL
你可以用这个相同的加密向量加密附件中的密文,作为答案进行提交

猜出是凯撒密码,26种情况都尝试一下,发现在13位时是security,有意义的单词,所以猜测这是正确的偏移量,将给出的密文按13位解密就行

ctf:1002:06af9108f2e1fecf144e2e8adef09efd:a7fcb22a88038f35a8f39d503e7f0062:::
用户名(Username): 这是用户的登录名。
用户ID(User ID): 这是用户在系统中的唯一标识符。
散列密码(Hashed Password): 这是用户密码的散列值,而不是明文密码。散列密码通常用于安全存储用户密码,以防止明文密码泄漏。
附加信息(Additional Information): 这个字段可能包含用户的其他信息,但在提供的示例中为空。
散列密码都是经过处理的,无法直接从中获取原始密码。这是因为Windows通常会将密码进行哈希处理,以增强安全性。哈希是一种单向函数,它将输入转换为固定长度的字符串,使得很难从哈希值还原出原始输入。这有助于保护用户密码免受未经授权的访问
用户名:ctf 用户ID:1002 散列密码:06af9108f2e1fecf144e2e8adef09efd:a7fcb22a88038f35a8f39d503e7f0062