本文目录一览:
- 1、什么叫暴力算法?
- 2、密码的暴力破解使用的是( )算法。 A.解析法 B.穷举法 C.分治法 D
- 3、C++题目;小明捡到了一个手机,屏幕点亮后需要输入解锁密码才能开锁。手机的解锁密码由8个数字组成……
- 4、扇区暴力破解时间
- 5、求大神帮忙写一个暴力破解算法,c或Java都行,密码由数字和字母组成,最大密码长度10位最小一位?
什么叫暴力算法?
当前对于各种加密算法.除了有针对性的破解算法,最基本的思想就是穷举密钥进行匹配,通常称为暴力破解算法。由于暴力破解算法包含密钥个数较多,遍历的时间超过实际可接受的范围。如果计算速度提高到足够快。这种遍历的算法因结构设计简便而具有实际应用的前景。
密码的暴力破解使用的是( )算法。 A.解析法 B.穷举法 C.分治法 D
B
穷举法,或称为暴力破解法,是一种针对于密码的破译方法,即将密码进行逐个推算直到找出真正的密码为止。例如一个已知是四位并且全部由数字组成的密码,其可能共有10000种组合,因此最多尝试10000次就能找到正确的密码。理论上利用这种方法可以破解任何一种密码,问题只在于如何缩短试误时间。因此有些人运用计算机来增加效率,有些人辅以字典来缩小密码组合的范围。
C++题目;小明捡到了一个手机,屏幕点亮后需要输入解锁密码才能开锁。手机的解锁密码由8个数字组成……
#includebits/stdc++.h
using namespace std;
const int mxn=2e5+5;
string ans;
int main(){
ios_base::sync_with_stdio(false);
cinans;
int cnt=0;
string tmp;
for(char a='0';a='9';++a){
for(char b='0';b='9';++b){
if(b==a)continue;
for(char c='0';c='9';++c){
if(c==a or c==b)continue;
for(char d='0';d='9';++d){
if(d==a or d==b or d==c)continue;
for(char e='0';e='9';++e){
if(e==a or e==b or e==c or e==d)continue;
for(char f='0';f='9';++f){
if(f==a or f==b or f==c or f==d or f==e)continue;
for(char g='0';g='9';++g){
if(g==a or g==b or g==c or g==d or g==e or g==f)continue;
for(char h='0';h='9';++h){
if(h==a or h==b or h==c or h==d or h==e or h==f or h==g)continue;
tmp="";
tmp+=a;tmp+=b;tmp+=c;tmp+=d;tmp+=e;tmp+=f;tmp+=g;tmp+=h;
++cnt;
if(tmp==ans){
coutcntendl;
return 0;
}
}
}
}
}
}
}
}
}
}
扇区暴力破解时间
暴力解除需要好几年,所以一般只用暴力破解的方式扫描扇区默认密钥或弱密钥作为其他攻击方法的辅助。
暴力破解法:卡属于被动式智能卡,电源由读卡器提供,与读卡器断开连接后就无法保存数据,也不存在尝试多次密钥错误后锁死卡片的可能,所以针对这一特性我们可以使用暴力破解法,更换密钥循环测试直到扇区验证通过。但是读卡器与卡片的通信有延时,枚举某一扇区的密钥A或密钥B共有248即281474976710656种可能性_,假设每次验证密钥需要1ms时间,也需要8296年才能暴力破解出一个扇区的一种密钥,在M1卡的加密算法被公开之前,穷举每一位去暴力破解M1卡密钥是不可能的。当M1卡的算法被攻破后,很多发卡商的M1卡都受到了攻击,攻击者利用获得密钥构建了密钥库,而由于M1卡的密钥不能像网络账户一样随时更换,很多发卡商又使用了统一的密钥,因此可以通过遍历已有密钥库中密钥的方式来解开一部分M1卡的密钥。对于那些未受到密钥泄露影响的M1卡,即使知道了Crypto-1算法,再配合高性能计算机辅助运算,仍需要几十个小时的时间才能解开非典型密钥,所以一般只用暴力破解的方式扫描扇区默认密钥或弱密钥作为其他攻击方法的辅助。
求大神帮忙写一个暴力破解算法,c或Java都行,密码由数字和字母组成,最大密码长度10位最小一位?
import org.junit.Test;
public class T {
//最小长度
private int min = 1;
//最大长度
private int max = 10;
//准备数字,大小写
private char[] psw = {'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z','A','B','C','D','E','F','G','H','I','J','K','L','M','N','O','P','Q','R','S','T','U','V','W','X','Y','Z'};
@Test
public void t(){
for(int i=min; i=max; i++){
permutation(psw, i);
}
}
/**
* 全排列入口
* @param array 密码数据
* @param n 密码长度
*/
private void permutation(char[] array, int n) {
permutation("", array, n);
}
/**
*
* @param s 已生成临时字串
* @param array 密码数据
* @param n 剩余未生成的字符长度
*/
private void permutation(String s, char[] array, int n) {
if(n == 1) {
for(int i=0; iarray.length; i++) {
//这是密码结果
String result = s+array[i];
System.out.println(result);
}
} else {
for(int i=0; iarray.length; i++) {
permutation(s+array[i], array, n-1);
}
}
}
}
不过建议不要暴力,有针对性会好一点