- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用彩虹表编写一个程序来散列和破解长度为四的密码。哈希值的算法为: ℎ𝑎𝑠ℎ𝑉𝑎𝑙𝑢𝑒 = (163 ∗ 𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟 𝑎𝑡 𝑝𝑜𝑠𝑡𝑖𝑜 𝑛 0) + (162 * 𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟 𝑎𝑡 𝑝𝑜𝑠𝑡𝑖𝑜𝑛 1 + (161 * 𝑐ℎ𝑎𝑟𝑎𝑐𝑡 𝑒𝑟𝑎𝑡𝑝𝑜𝑠𝑡𝑖𝑜𝑛2)+(160*𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟𝑎𝑡𝑝𝑜𝑠𝑡𝑖 𝑜𝑛3)。
我需要帮助找出我在计算方法上做错了什么。代码前面有注释,说明需要做什么才能有助于解决问题。
public void compute() {
//TODO: Add code to compute all possible 4-letter passwords - store in rainbow
// Begin your possible passwords with aaaa and end with zzzz
// Use hashCode(pwd) % 29 to determine the key (index) of where this element should be added to rainbow's ArrayList of ArrayLists
// You will need to cast as int, such as key = (int) hashCode(pwd)%29 - key is the index of where to add this element in the rainbow ArrayList of ArrayLists
if(password.length() != passwordLength){
throw new InvalidPasswordException();
}
while(password.startsWith("aaaa") && password.endsWith("zzzz")){
key = (int) (hashCode(password)%29);
rainbow.add(key, password);
}
}
如果需要更多信息,请告诉我。
编辑:这是完整的代码,因此可以看到所有其他方法(尚未全部完成)
import java.util.*;
public class HashMap implements HashMapADT{
private String password;
private Long hash;
private int key;
private final int passwordLength = 4;
ArrayList<ArrayList<PasswordMap>> rainbow;
public HashMap() {
password = "";
hash = -1L;
key = -1;
initializeHashMap();
}
public HashMap(String str) {
password = str;
hash = hashCode(str);
key = (int)(hash % 29);
initializeHashMap();
}
private void initializeHashMap() {
//Initialize an ArrayList of 29 elements - when dividing by 29 only remainders 0 - 28 are possible
rainbow = new ArrayList<>();
for(int i = 0; i < 29; i++) {
rainbow.add(new ArrayList<PasswordMap>());
}
compute();
}
public Long hashCode(String str) throws InvalidPasswordException{
this.hash = 0L;
//TODO: Calculate hashCode using hashing function based on powers of 29
return 0L; // temp - delete once hashCode method is implemented.
}
public void compute() {
//TODO: Add code to compute all possible 4-letter passwords - store in rainbow
// Begin your possible passwords with aaaa and end with zzzz
// Use hashCode(pwd) % 29 to determine the key (index) of where this element should be added to rainbow's ArrayList of ArrayLists
// You will need to cast as int, such as key = (int) hashCode(pwd)%29 - key is the index of where to add this element in the rainbow ArrayList of ArrayLists
if(password.length() != passwordLength){
throw new InvalidPasswordException();
}
while(password.startsWith("aaaa") && password.endsWith("zzzz")){
key = (int) (hashCode(password)%29);
rainbow.add(key, password);
}
}
public Long hash(String pwd) {
//TODO: Return the hashcode for a given password
// First, hash the password: int key = (int)(hashCode(pwd) % 29);
// Use this key to determine which element in the rainbow table you should be traversing to find the hash code
// Recall rainbow is an ArrayList of ArrayLists!!
key = (int)(hashCode(pwd)%29);
return 0L; // temp - delete once hash method is implemented.
}
public String hack(Long pwdHash) {
String pwd="";
//TODO: Given a hashed password, pwdHash, determine the password
// When identifying a correct hashed password, you will need to look at a difference RATHER THAN ==
// That is,
//if (Math.abs(pwdHash - rainbow.get(key).get(i).getHash())<.001) - you've found your password!!
// Note: key is the location of the rainbow list you should be traversing: key = (int)((pwdHash) % 29);
return pwd;
}
@Override
public String toString() {
return password + ": " + hash;
}
}
最佳答案
这里的问题是你的 while
循环。
while(f())
表示“只要 f()
返回 true,就继续执行此操作”。
您说过“只要 password
以“aaaa”开头且 password
以“zzzz”结尾,就继续执行此操作。
我们没有看到您初始化password
,但如果它是如上所述的四个字符的字符串,则它不可能既以“aaaa”开头又以“zzzz”结尾,因此 while 循环的 block 永远不会执行。
如果 password
为 "aaaazzzz"
且条件为 true,那么,由于您从未修改过 password
的值,因此 while循环将永远重复。
你可能想要这样的东西:
for(int i=0;; i++) {
String password = createPassword(i);
rainbow.add(password, hash(password));
}
...并编写一个方法createPassword()
,使得createPassword(0)
返回“aaaa”,createPassword(1)
返回“aaab”,createPassword(26)
返回“aaba”等。
关于Java Rainbow Tables-计算方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47142228/
我正在使用 - 或者我正在尝试使用 rainbow.js 语法高亮库来显示我在我的博客 (Google Blogger) 上发布的代码片段.我认为我正确地使用了它: // here goes the
我对 Dapper Rainbow 还很陌生,所以我可能会遗漏一些明显的东西。是否可以指定表名,如果可以,如何指定? 我尝试了以下但没有运气。 public class DashboardContex
我想知道是否有人可以详细解释链如何在彩虹表中工作,就像你对一个完整的新手一样,但与编程有关。 我知道一个链有 16 个字节长。 8 个字节标记起点,8 个字节标记结束。我也明白在文件名中我们有链长,即
让我们假设一个简单的非加盐哈希函数,只是一个普通的旧 $hash = md5($pass) . 前提: 密码散列全部发生在服务器端,散列存储在数据库中。客户无法看到这些。 彩虹表攻击必须知道哈希值才能
我在 x、y 空间中绘制了一系列曲线,其中每条曲线都由一个标量值 z 标识。我希望将 z 值映射到每一行的颜色,但大多数颜色图/颜色表都是在考虑图像的情况下构建的(例如,在白色背景上,灰度颜色图隐藏了
我正在尝试使用 Rainbow 库( http://www.cs.cmu.edu/~mccallum/bow/src/bow-20020213.tar.gz )来解决一个简单的问题,但无法编译 Rai
我正在尝试使用彩虹表编写一个程序来散列和破解长度为四的密码。哈希值的算法为: ℎ𝑎𝑠ℎ𝑉𝑎𝑙𝑢𝑒 = (163 ∗ 𝑐ℎ𝑎𝑟𝑎𝑐𝑡𝑒𝑟 𝑎𝑡 𝑝𝑜𝑠𝑡𝑖𝑜
首先让我说我整天都在互联网上搜索解决方案,但我被难住了。我设法找到了足够多的代码片段,将我需要的“几乎”工作版本放在一起——但老实说,当涉及到如何让它工作时,我只是迷路了。 这是我正在尝试做的事情:
我正在尝试在我的博客上实现 rainbow jquery 插件:https://levalencia-public.sharepoint.com/blog Rainbow 插件在这里: http://
我正在试用 Dapper。我喜欢我到目前为止所看到的。为了做简单的 CRUD,我使用 Dapper.rainbow。它工作得很好。但是,它仅在表具有名称为 Id 的标识列时才有效。拥有这样的数据库是有
我正在用 Java 编写 Rainbow Table 生成器,现在是时候实现多线程来提高整个过程的速度了。 到目前为止,我有一个 GUI,它调用 SwingWorker 类来处理表构建和数据填充。 S
每当我从这里运行“气象站”应用程序时:https://github.com/androidthings/weatherstation并让它运行一段时间,温度传感不正常。 我的房间温度约为 25C,而传
我目前正在设计游戏的标题屏幕。在设计 Logo 时,我决定在边缘使用彩虹边框: 我想在此之后我想在标题屏幕上实现具有类似彩虹边框的其余组件(特别是 JButtons)。在寻找方法时,我遇到了 Abst
与 d3.v4.0.0-alpha.35.min.js用于this example ,有一个rainbowColor() d3.v4.min.js 中现在缺少的函数: var color = rain
编辑:我有点想通了这里的代码还有一些问题(现在必须是 255 个对象): for (let i = 1; i 255) { num = 255; } let red = 25
我想要在 Emacs 中编辑 Clojure 的彩虹括号,从 VI does this 开始我认为在 Emacs 中它应该是类似 M-x Butterfly 之类的东西:) 最佳答案 这是一个老问题了
有人可以解释一下 Dapper.Rainbow 与 Dapper.Contrib 之间的区别吗? 我的意思是你什么时候使用 Dapper.Contrib 的 SqlMapperExtensions.c
嗨,我在这里使用 Thread.delay() 在彩虹的每个弧的形成之间添加延迟,使其看起来像动画。当我使用 Thread.delay() 时,它会延迟整个过程。有没有其他方法或者我做错了。请帮我解决
我正在使用 dapper.rainbow 将记录插入 MSSQL 数据库。以下是我的代码 int? id = db.RoomTypes.Insert(roomType) 当我运行我的应用程序时,出现
所以目前我正在通过 Codeanywhere 为我的一门大学类(class)完成一个网站,但我似乎无法让彩虹文本与我的代码一起工作。 我已经尝试解决这个问题 >> https://w3bits.com
我是一名优秀的程序员,十分优秀!