Crypto-day1

day1

写的笔记只用于提供自己学习复盘和督促自己学习,资料应该基本都是风二西师傅的,在bilibili看到,在此提供师傅的一些链接

风二西师傅哔哩哔哩

rsa_f2x: 风二西关于rsa 原创题目系列 - Gitee.com

【CTF-加密】RSA之leak=d+p+q

【CTF-加密】RSA之leak=d+p+q_哔哩哔哩_bilibili

[3.RSA_2022收集/P01 题目/P32 l=d+p+q · 风二西/rsa_f2x - 码云 - 开源中国](https://gitee.com/fengerxi/rsa_f2x/tree/master/3.RSA_2022收集/P01 题目/P32 l=d+p+q)

import libnum
import uuid
flag = "flag{" + str(uuid.uuid4()) + "}"
m=libnum.s2n(flag)
p=libnum.generate_prime(512)
q=libnum.generate_prime(512)

e = 0x10001
n = p * q
c = pow(m, e, n)
d=libnum.invmod(e,(p-1)*(q-1))
leak = d+p+q
print(f'{e = }')
print(f'{c = }')
print(f'{n = }')
print(f'{leak = }')

l e a k = d + p + q leak = d+p+q leak=d+p+q
p h i = ( p − 1 ) ∗ ( q − 1 ) = n − ( p + q ) + 1 phi=(p-1)*(q-1)=n-(p+q)+1 phi=(p1)(q1)=n(p+q)+1
d = l e a k − ( p + q ) d = leak-(p+q) d=leak(p+q)
c d m o d n = m c^dmodn=m cdmodn=m
c l e a k ∗ c − ( p + q ) m o d n = m c^{leak}*c^{-(p+q)}modn=m cleakc(p+q)modn=m

欧拉定理: a p h i ( n ) m o d n = 1 a^{phi(n)}modn=1 aphi(n)modn=1

问题: c ( p + q ) m o d n = ? c^{(p+q)}modn=? c(p+q)modn=?
c p h i ( n ) m o d n = 1 c^{phi(n)}modn=1 cphi(n)modn=1
c n − ( p + q ) + 1 m o d n = 1 c^{n-(p+q)+1}modn=1 cn(p+q)+1modn=1
c n + 1 ∗ c − ( p + q ) m o d n = 1 c^{n+1}*c^{-(p+q)}modn=1 cn+1c(p+q)modn=1

结论 c n + 1 m o d n = c ( p + q ) m o d n c^{n+1}modn = c^{(p+q)}modn cn+1modn=c(p+q)modn

回到式子 c l e a k ∗ c − ( p + q ) m o d n = m c^{leak}*c^{-(p+q)}modn=m cleakc(p+q)modn=m

c l e a k ∗ c − ( n + 1 ) m o d n = m c^{leak}*c^{-(n+1)}modn=m cleakc(n+1)modn=m

最终结果 c l e a k − ( n + 1 ) m o d n = m c^{leak-(n+1)}modn=m cleak(n+1)modn=m

# exp:
e = 
c = 
n = 
leak = 
from Crypto.Util.number import *
# 原本的样子m = pow(c,d,n)
m=pow(c,leak-n-1,n)
flag = long_to_bytes(m)
print(flag)

【CTF-加密】RSA之 l e a k = p q m o d n + q p m o d n leak=p^qmodn+q^pmodn leak=pqmodn+qpmodn

【CTF-加密】RSA之leak=pq%n+qp%n_哔哩哔哩_bilibili

[3.RSA_2022收集/P01 题目/P33 pow(p, q, n) + pow(q, p, n) · 风二西/rsa_f2x - 码云 - 开源中国](https://gitee.com/fengerxi/rsa_f2x/tree/master/3.RSA_2022收集/P01 题目/P33 pow(p, q, n) + pow(q, p, n))

import libnum
import uuid
flag = "flag{" + str(uuid.uuid4()) + "}"
m=libnum.s2n(flag)
p=libnum.generate_prime(512)
q=libnum.generate_prime(512)

e = 0x10001
n = p * q
c = pow(m, e, n)
leak = (pow(p, q, n) + pow(q, p, n)) % n
print(f'{e = }')
print(f'{c = }')
print(f'{n = }')
print(f'{leak = }')

费马小定理:

a p m o d p = a m o d p a^pmodp=amodp apmodp=amodp

a p − 1 m o d p = 1 a^{p-1}modp=1 ap1modp=1

模拟方法:

自己试着按照题目给的算法运行,去看有没有什么相等的数值,或者找出一些突破点

比如这个题中的 l e a k = ( p o w ( p , q , n ) + p o w ( q , p , n ) ) leak = (pow(p, q, n) + pow(q, p, n)) % n leak=(pow(p,q,n)+pow(q,p,n))

l e a k = p + q leak=p+q leak=p+q

l e a k 1 = ( p o w ( p , q , n ) = p , l e a k 2 = ( p o w ( q , p , n ) = q leak1 = (pow(p, q, n) = p,leak2 = (pow(q, p, n) = q leak1=(pow(p,q,n)=p,leak2=(pow(q,p,n)=q

结论:

l e a k = ( p o w ( p , q , n ) + p o w ( q , p , n ) ) leak = (pow(p, q, n) + pow(q, p, n)) % n leak=(pow(p,q,n)+pow(q,p,n))

l e a k 1 = ( p o w ( p , q , n ) = p , l e a k 2 = ( p o w ( q , p , n ) = q leak1 = (pow(p, q, n) = p,leak2 = (pow(q, p, n) = q leak1=(pow(p,q,n)=p,leak2=(pow(q,p,n)=q

# exp:
e = 
c = 
n = 
leak = 

from Crypto.Util.number import *
# leak=p+q
phi=n-leak+1
d = inverse(e,phi)
m=pow(c,d,n)
flag = long_to_bytes(m)
print(flag)

【CTF-加密】rsa_dp泄露新解析—e较大的情况

【CTF-加密】rsa_dp泄露新解析_哔哩哔哩_bilibili

[3.RSA_2022收集/P01 题目/P08 dp泄露 · 风二西/rsa_f2x - 码云 - 开源中国](https://gitee.com/fengerxi/rsa_f2x/tree/master/3.RSA_2022收集/P01 题目/P08 dp泄露)

import gmpy2
import libnum
import uuid

flag = "flag{" + str(uuid.uuid4()) + "}"
m = libnum.s2n(flag)
p = libnum.generate_prime(1024)
q = libnum.generate_prime(1024)
e = libnum.generate_prime(128)
n = p * q
phi = (p - 1) * (q - 1)
d = gmpy2.invert(e, phi)

dp = d % (p - 1)
c = pow(m, e, n)
print("n=", n)
print("e=", e)
print("c=", c)
print("dp=", dp)

常规版本的e相对小,为65537,k会在1-65537内,采用的方法是爆破k

# exp:
for k in range(1, 65537):
    p = (dp * e - 1) // k + 1
    if n % p == 0:
        q = n // p
        break

这道题的exp:

# exp:
n= 
e= 
c= 
dp= 

import libnum
from Crypto.Util.number import *
p=libnum.gcd(pow(2,dp*e,n)-2,n)
q=n//p
phi=(p-1)*(q-1)
d=inverse(e,phi)
m=pow(c,d,n)
flag = long_to_bytes(m)
print(flag)

2024-11-09
晚安!

D:\Java安装\bin\java.exe -XX:TieredStopAtLevel=1 -Dspring.output.ansi.enabled=always -Dcom.sun.management.jmxremote -Dspring.jmx.enabled=true -Dspring.liveBeansView.mbeanDomain -Dspring.application.admin.enabled=true "-Dmanagement.endpoints.jmx.exposure.include=*" "-javaagent:D:\Idea\IntelliJ IDEA 2024.1.2\lib\idea_rt.jar=50682:D:\Idea\IntelliJ IDEA 2024.1.2\bin" -Dfile.encoding=UTF-8 -classpath D:\SpringBoot开发\作业\exam\target\classes;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot-starter-security\3.5.3\spring-boot-starter-security-3.5.3.jar;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot-starter\3.5.3\spring-boot-starter-3.5.3.jar;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot\3.5.3\spring-boot-3.5.3.jar;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot-starter-logging\3.5.3\spring-boot-starter-logging-3.5.3.jar;C:\Users\33635\.m2\repository\ch\qos\logback\logback-classic\1.5.18\logback-classic-1.5.18.jar;C:\Users\33635\.m2\repository\ch\qos\logback\logback-core\1.5.18\logback-core-1.5.18.jar;C:\Users\33635\.m2\repository\org\apache\logging\log4j\log4j-to-slf4j\2.24.3\log4j-to-slf4j-2.24.3.jar;C:\Users\33635\.m2\repository\org\apache\logging\log4j\log4j-api\2.24.3\log4j-api-2.24.3.jar;C:\Users\33635\.m2\repository\org\slf4j\jul-to-slf4j\2.0.17\jul-to-slf4j-2.0.17.jar;C:\Users\33635\.m2\repository\jakarta\annotation\jakarta.annotation-api\2.1.1\jakarta.annotation-api-2.1.1.jar;C:\Users\33635\.m2\repository\org\yaml\snakeyaml\2.4\snakeyaml-2.4.jar;C:\Users\33635\.m2\repository\org\springframework\spring-aop\6.2.8\spring-aop-6.2.8.jar;C:\Users\33635\.m2\repository\org\springframework\spring-beans\6.2.8\spring-beans-6.2.8.jar;C:\Users\33635\.m2\repository\org\springframework\security\spring-security-config\6.5.1\spring-security-config-6.5.1.jar;C:\Users\33635\.m2\repository\org\springframework\spring-context\6.2.8\spring-context-6.2.8.jar;C:\Users\33635\.m2\repository\org\springframework\security\spring-security-web\6.5.1\spring-security-web-6.5.1.jar;C:\Users\33635\.m2\repository\org\springframework\spring-expression\6.2.8\spring-expression-6.2.8.jar;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot-starter-thymeleaf\3.5.3\spring-boot-starter-thymeleaf-3.5.3.jar;C:\Users\33635\.m2\repository\org\thymeleaf\thymeleaf-spring6\3.1.3.RELEASE\thymeleaf-spring6-3.1.3.RELEASE.jar;C:\Users\33635\.m2\repository\org\thymeleaf\thymeleaf\3.1.3.RELEASE\thymeleaf-3.1.3.RELEASE.jar;C:\Users\33635\.m2\repository\org\attoparser\attoparser\2.0.7.RELEASE\attoparser-2.0.7.RELEASE.jar;C:\Users\33635\.m2\repository\org\unbescape\unbescape\1.1.6.RELEASE\unbescape-1.1.6.RELEASE.jar;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot-starter-web\3.5.3\spring-boot-starter-web-3.5.3.jar;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot-starter-json\3.5.3\spring-boot-starter-json-3.5.3.jar;C:\Users\33635\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.19.1\jackson-datatype-jdk8-2.19.1.jar;C:\Users\33635\.m2\repository\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.19.1\jackson-datatype-jsr310-2.19.1.jar;C:\Users\33635\.m2\repository\com\fasterxml\jackson\module\jackson-module-parameter-names\2.19.1\jackson-module-parameter-names-2.19.1.jar;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot-starter-tomcat\3.5.3\spring-boot-starter-tomcat-3.5.3.jar;C:\Users\33635\.m2\repository\org\apache\tomcat\embed\tomcat-embed-core\10.1.42\tomcat-embed-core-10.1.42.jar;C:\Users\33635\.m2\repository\org\apache\tomcat\embed\tomcat-embed-websocket\10.1.42\tomcat-embed-websocket-10.1.42.jar;C:\Users\33635\.m2\repository\org\springframework\spring-web\6.2.8\spring-web-6.2.8.jar;C:\Users\33635\.m2\repository\io\micrometer\micrometer-observation\1.15.1\micrometer-observation-1.15.1.jar;C:\Users\33635\.m2\repository\io\micrometer\micrometer-commons\1.15.1\micrometer-commons-1.15.1.jar;C:\Users\33635\.m2\repository\org\springframework\spring-webmvc\6.2.8\spring-webmvc-6.2.8.jar;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot-starter-validation\3.5.3\spring-boot-starter-validation-3.5.3.jar;C:\Users\33635\.m2\repository\org\apache\tomcat\embed\tomcat-embed-el\10.1.42\tomcat-embed-el-10.1.42.jar;C:\Users\33635\.m2\repository\org\hibernate\validator\hibernate-validator\8.0.2.Final\hibernate-validator-8.0.2.Final.jar;C:\Users\33635\.m2\repository\jakarta\validation\jakarta.validation-api\3.0.2\jakarta.validation-api-3.0.2.jar;C:\Users\33635\.m2\repository\org\jboss\logging\jboss-logging\3.6.1.Final\jboss-logging-3.6.1.Final.jar;C:\Users\33635\.m2\repository\com\fasterxml\classmate\1.7.0\classmate-1.7.0.jar;C:\Users\33635\.m2\repository\org\thymeleaf\extras\thymeleaf-extras-springsecurity6\3.1.2.RELEASE\thymeleaf-extras-springsecurity6-3.1.2.RELEASE.jar;C:\Users\33635\.m2\repository\org\slf4j\slf4j-api\2.0.17\slf4j-api-2.0.17.jar;C:\Users\33635\.m2\repository\com\mysql\mysql-connector-j\9.2.0\mysql-connector-j-9.2.0.jar;C:\Users\33635\.m2\repository\com\baomidou\mybatis-plus-boot-starter\3.5.7\mybatis-plus-boot-starter-3.5.7.jar;C:\Users\33635\.m2\repository\com\baomidou\mybatis-plus\3.5.7\mybatis-plus-3.5.7.jar;C:\Users\33635\.m2\repository\com\baomidou\mybatis-plus-core\3.5.7\mybatis-plus-core-3.5.7.jar;C:\Users\33635\.m2\repository\com\baomidou\mybatis-plus-annotation\3.5.7\mybatis-plus-annotation-3.5.7.jar;C:\Users\33635\.m2\repository\com\baomidou\mybatis-plus-extension\3.5.7\mybatis-plus-extension-3.5.7.jar;C:\Users\33635\.m2\repository\org\mybatis\mybatis\3.5.16\mybatis-3.5.16.jar;C:\Users\33635\.m2\repository\com\github\jsqlparser\jsqlparser\4.9\jsqlparser-4.9.jar;C:\Users\33635\.m2\repository\org\mybatis\mybatis-spring\2.1.2\mybatis-spring-2.1.2.jar;C:\Users\33635\.m2\repository\com\baomidou\mybatis-plus-spring-boot-autoconfigure\3.5.7\mybatis-plus-spring-boot-autoconfigure-3.5.7.jar;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot-autoconfigure\3.5.3\spring-boot-autoconfigure-3.5.3.jar;C:\Users\33635\.m2\repository\org\springframework\boot\spring-boot-starter-jdbc\3.5.3\spring-boot-starter-jdbc-3.5.3.jar;C:\Users\33635\.m2\repository\com\zaxxer\HikariCP\6.3.0\HikariCP-6.3.0.jar;C:\Users\33635\.m2\repository\org\springframework\spring-jdbc\6.2.8\spring-jdbc-6.2.8.jar;C:\Users\33635\.m2\repository\org\springframework\spring-tx\6.2.8\spring-tx-6.2.8.jar;C:\Users\33635\.m2\repository\org\projectlombok\lombok\1.18.38\lombok-1.18.38.jar;C:\Users\33635\.m2\repository\org\springframework\spring-core\6.2.8\spring-core-6.2.8.jar;C:\Users\33635\.m2\repository\org\springframework\spring-jcl\6.2.8\spring-jcl-6.2.8.jar;C:\Users\33635\.m2\repository\org\springframework\security\spring-security-core\6.5.1\spring-security-core-6.5.1.jar;C:\Users\33635\.m2\repository\org\springframework\security\spring-security-crypto\6.5.1\spring-security-crypto-6.5.1.jar;C:\Users\33635\.m2\repository\com\networknt\json-schema-validator\1.5.1\json-schema-validator-1.5.1.jar;C:\Users\33635\.m2\repository\com\ethlo\time\itu\1.10.2\itu-1.10.2.jar;C:\Users\33635\.m2\repository\com\fasterxml\jackson\core\jackson-databind\2.19.1\jackson-databind-2.19.1.jar;C:\Users\33635\.m2\repository\com\fasterxml\jackson\core\jackson-annotations\2.19.1\jackson-annotations-2.19.1.jar;C:\Users\33635\.m2\repository\com\fasterxml\jackson\core\jackson-core\2.19.1\jackson-core-2.19.1.jar;C:\Users\33635\.m2\repository\com\fasterxml\jackson\dataformat\jackson-dataformat-yaml\2.19.1\jackson-dataformat-yaml-2.19.1.jar;C:\Users\33635\.m2\repository\io\jsonwebtoken\jjwt-api\0.11.5\jjwt-api-0.11.5.jar com.example.exam.ExamApplication . ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v3.5.3) 2025-06-20T21:44:46.977+08:00 INFO 13588 --- [exam] [ main] com.example.exam.ExamApplication : Starting ExamApplication using Java 17.0.14 with PID 13588 (D:\SpringBoot开发\作业\exam\target\classes started by 33635 in D:\SpringBoot开发\作业\exam) 2025-06-20T21:44:46.981+08:00 INFO 13588 --- [exam] [ main] com.example.exam.ExamApplication : No active profile set, falling back to 1 default profile: "default" 2025-06-20T21:44:47.582+08:00 WARN 13588 --- [exam] [ main] ConfigServletWebServerApplicationContext : Exception encountered during context initialization - cancelling refresh attempt: org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'backupHistoryMapper' defined in file [D:\SpringBoot开发\作业\exam\target\classes\com\example\exam\mapper\BackupHistoryMapper.class]: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String 2025-06-20T21:44:47.588+08:00 INFO 13588 --- [exam] [ main] .s.b.a.l.ConditionEvaluationReportLogger : Error starting ApplicationContext. To display the condition evaluation report re-run your application with 'debug' enabled. 2025-06-20T21:44:47.597+08:00 ERROR 13588 --- [exam] [ main] o.s.boot.SpringApplication : Application run failed org.springframework.beans.factory.BeanDefinitionStoreException: Invalid bean definition with name 'backupHistoryMapper' defined in file [D:\SpringBoot开发\作业\exam\target\classes\com\example\exam\mapper\BackupHistoryMapper.class]: Invalid value type for attribute 'factoryBeanObjectType': java.lang.String at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.getTypeForFactoryBean(AbstractAutowireCapableBeanFactory.java:864) ~[spring-beans-6.2.8.jar:6.2.8] at org.springframework.beans.factory.support.AbstractBeanFactory.getType(AbstractBeanFactory.java:745) ~[spring-beans-6.2.8.jar:6.2.8] at org.springframework.beans.factory.support.DefaultListableBeanFactory.findAnnotationOnBean(DefaultListableBeanFactory.java:817) ~[spring-beans-6.2.8.jar:6.2.8] at org.springframework.boot.sql.init.dependency.AnnotationDependsOnDatabaseInitializationDetector.detect(AnnotationDependsOnDatabaseInitializationDetector.java:36) ~[spring-boot-3.5.3.jar:3.5.3] at org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor.detectDependsOnInitializationBeanNames(DatabaseInitializationDependencyConfigurer.java:152) ~[spring-boot-3.5.3.jar:3.5.3] at org.springframework.boot.sql.init.dependency.DatabaseInitializationDependencyConfigurer$DependsOnDatabaseInitializationPostProcessor.postProcessBeanFactory(DatabaseInitializationDependencyConfigurer.java:115) ~[spring-boot-3.5.3.jar:3.5.3] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:363) ~[spring-context-6.2.8.jar:6.2.8] at org.springframework.context.support.PostProcessorRegistrationDelegate.invokeBeanFactoryPostProcessors(PostProcessorRegistrationDelegate.java:197) ~[spring-context-6.2.8.jar:6.2.8] at org.springframework.context.support.AbstractApplicationContext.invokeBeanFactoryPostProcessors(AbstractApplicationContext.java:791) ~[spring-context-6.2.8.jar:6.2.8] at org.springframework.context.support.AbstractApplicationContext.refresh(AbstractApplicationContext.java:609) ~[spring-context-6.2.8.jar:6.2.8] at org.springframework.boot.web.servlet.context.ServletWebServerApplicationContext.refresh(ServletWebServerApplicationContext.java:146) ~[spring-boot-3.5.3.jar:3.5.3] at org.springframework.boot.SpringApplication.refresh(SpringApplication.java:752) ~[spring-boot-3.5.3.jar:3.5.3] at org.springframework.boot.SpringApplication.refreshContext(SpringApplication.java:439) ~[spring-boot-3.5.3.jar:3.5.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:318) ~[spring-boot-3.5.3.jar:3.5.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1361) ~[spring-boot-3.5.3.jar:3.5.3] at org.springframework.boot.SpringApplication.run(SpringApplication.java:1350) ~[spring-boot-3.5.3.jar:3.5.3] at com.example.exam.ExamApplication.main(ExamApplication.java:12) ~[classes/:na] 进程已结束,退出代码为 1
06-21
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值