fix a potential freeze
This commit is contained in:
parent
2bd897a6f6
commit
78bcace8ed
2 changed files with 19 additions and 7 deletions
24
IGA.ts
24
IGA.ts
|
@ -126,7 +126,7 @@ function checksum(input: string) {
|
||||||
return state.join("")
|
return state.join("")
|
||||||
}
|
}
|
||||||
|
|
||||||
function hashInternal(toHash: number[], len: number, salt: number): number[] {
|
function hashInternal(toHash: number[], len: number, salt: number, first: boolean): number[] {
|
||||||
let complete: number[] = []
|
let complete: number[] = []
|
||||||
|
|
||||||
while (toHash.length > 0) {
|
while (toHash.length > 0) {
|
||||||
|
@ -142,7 +142,15 @@ function hashInternal(toHash: number[], len: number, salt: number): number[] {
|
||||||
toHash = toHash.slice(len, toHash.length)
|
toHash = toHash.slice(len, toHash.length)
|
||||||
let curr = 0
|
let curr = 0
|
||||||
for (let i = 0; i < inp.length; i++) {
|
for (let i = 0; i < inp.length; i++) {
|
||||||
selected[curr] = (selected[curr] + inp[i] + salt) % 65536
|
let temp = selected[curr] + inp[i] + salt
|
||||||
|
while (temp >= 65536) {
|
||||||
|
let sub = selected[curr-1] ? selected[curr-1] : selected[selected.length-1]
|
||||||
|
if (first || sub == 0) {
|
||||||
|
sub = 2411
|
||||||
|
}
|
||||||
|
temp -= sub
|
||||||
|
}
|
||||||
|
selected[curr] = temp
|
||||||
curr++
|
curr++
|
||||||
if (curr >= len) {
|
if (curr >= len) {
|
||||||
curr = 0
|
curr = 0
|
||||||
|
@ -155,12 +163,16 @@ function hashInternal(toHash: number[], len: number, salt: number): number[] {
|
||||||
|
|
||||||
return complete
|
return complete
|
||||||
}
|
}
|
||||||
function hashInternal2(toHash: number[], salt: number): number[] {
|
function hashInternal2(toHash: number[], salt: number, first: boolean): number[] {
|
||||||
let state = copy(toHash, true)
|
let state = copy(toHash, true)
|
||||||
for (let i = 0; i < toHash.length; i++) {
|
for (let i = 0; i < toHash.length; i++) {
|
||||||
let temp = state[i] + (state[i+1] ? state[i+1] : state[0]) + salt
|
let temp = state[i] + (state[i+1] ? state[i+1] : state[0]) + salt
|
||||||
while (temp >= 65536) {
|
while (temp >= 65536) {
|
||||||
temp -= state[i-1] ? state[i-1] : state[state.length-1]
|
let sub = state[i-1] ? state[i-1] : state[state.length-1]
|
||||||
|
if (first || sub == 0) {
|
||||||
|
sub = 2411
|
||||||
|
}
|
||||||
|
temp -= sub
|
||||||
}
|
}
|
||||||
toHash[i] = temp
|
toHash[i] = temp
|
||||||
}
|
}
|
||||||
|
@ -201,8 +213,8 @@ function hash(input: string, salt: number = 0, len: number = 32, seed?: number):
|
||||||
toHash.push(padding.generator.next())
|
toHash.push(padding.generator.next())
|
||||||
}
|
}
|
||||||
for (let it = 0; it < iterations; it++) {
|
for (let it = 0; it < iterations; it++) {
|
||||||
toHash = hashInternal(toHash, len, salt)
|
toHash = hashInternal(toHash, len, salt, it == 0)
|
||||||
toHash = hashInternal2(toHash, salt)
|
toHash = hashInternal2(toHash, salt, it == 0)
|
||||||
}
|
}
|
||||||
const pBin = fixbin(dec2bin(padding.seed), 16)
|
const pBin = fixbin(dec2bin(padding.seed), 16)
|
||||||
let dataBin = ""
|
let dataBin = ""
|
||||||
|
|
|
@ -58,7 +58,7 @@ async function main() {
|
||||||
} else {
|
} else {
|
||||||
failCount++
|
failCount++
|
||||||
if (failCount > 1000) {
|
if (failCount > 1000) {
|
||||||
console.log("Finding a qunique string took too long, exiting...")
|
console.log("Finding a unique string took too long, exiting...")
|
||||||
process.exit(0)
|
process.exit(0)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue