Data update
This commit is contained in:
parent
72eb4943cb
commit
4d5544505c
2347 changed files with 62432 additions and 16731 deletions
|
|
@ -3,9 +3,7 @@ func calcpass passw$ nonce$ .
|
|||
passw = number passw$
|
||||
for c$ in strchars nonce$
|
||||
if c$ <> "0"
|
||||
if start = 1
|
||||
num2 = passw
|
||||
.
|
||||
if start = 1 : num2 = passw
|
||||
start = 0
|
||||
.
|
||||
if c$ = "1"
|
||||
|
|
@ -43,11 +41,11 @@ func calcpass passw$ nonce$ .
|
|||
if c$ <> "0" and c$ <> "9"
|
||||
num1 = bitor num1 num2
|
||||
.
|
||||
num2 = num1
|
||||
num2 = bitand 0xffffffff num1
|
||||
.
|
||||
return num1
|
||||
return bitand 0xffffffff num1
|
||||
.
|
||||
proc test_passwd passwd$ nonce$ expected$ . .
|
||||
proc test_passwd passwd$ nonce$ expected$ .
|
||||
res = calcpass passwd$ nonce$
|
||||
m$ = passwd$ & " " & nonce$ & " " & res & " " & expected$
|
||||
if res = number expected$
|
||||
|
|
|
|||
113
Task/OpenWebNet-password/Rust/openwebnet-password.rs
Normal file
113
Task/OpenWebNet-password/Rust/openwebnet-password.rs
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
fn own_password_calculation(password: i64, nonce: &str) -> i64 {
|
||||
const M1: i64 = 0xFFFF_FFFF;
|
||||
const M8: i64 = 0xFFFF_FFF8;
|
||||
const M16: i64 = 0xFFFF_FFF0;
|
||||
const M128: i64 = 0xFFFF_FF80;
|
||||
const M16777216: i64 = 0xFF00_0000;
|
||||
|
||||
let mut flag = true;
|
||||
let mut number1 = 0;
|
||||
let mut number2 = 0;
|
||||
|
||||
for ch in nonce.chars() {
|
||||
number2 = number2 & M1;
|
||||
|
||||
match ch {
|
||||
'1' => {
|
||||
if flag { number2 = password; }
|
||||
flag = false;
|
||||
number1 = number2 & M128;
|
||||
number1 = number1 >> 7;
|
||||
number2 = number2 << 25;
|
||||
number1 = number1 + number2;
|
||||
},
|
||||
|
||||
'2' => {
|
||||
if flag { number2 = password; }
|
||||
flag = false;
|
||||
number1 = number2 & M16;
|
||||
number1 = number1 >> 4;
|
||||
number2 = number2 << 28;
|
||||
number1 = number1 + number2;
|
||||
},
|
||||
|
||||
'3' => {
|
||||
if flag { number2 = password; }
|
||||
flag = false;
|
||||
number1 = number2 & M8;
|
||||
number1 = number1 >> 3;
|
||||
number2 = number2 << 29;
|
||||
number1 = number1 + number2;
|
||||
},
|
||||
|
||||
'4' => {
|
||||
if flag { number2 = password; }
|
||||
flag = false;
|
||||
number1 = number2 << 1;
|
||||
number2 = number2 >> 31;
|
||||
number1 = number1 + number2;
|
||||
},
|
||||
|
||||
'5' => {
|
||||
if flag { number2 = password; }
|
||||
flag = false;
|
||||
number1 = number2 << 5;
|
||||
number2 = number2 >> 27;
|
||||
number1 = number1 + number2;
|
||||
},
|
||||
|
||||
'6' => {
|
||||
if flag { number2 = password; }
|
||||
flag = false;
|
||||
number1 = number2 << 12;
|
||||
number2 = number2 >> 20;
|
||||
number1 = number1 + number2;
|
||||
},
|
||||
|
||||
'7' => {
|
||||
if flag { number2 = password; }
|
||||
flag = false;
|
||||
number1 = number2 & 0xFF00;
|
||||
number1 = number1 + ((number2 & 0xFF) << 24);
|
||||
number1 = number1 + ((number2 & 0xFF0000) >> 16);
|
||||
number2 = (number2 & M16777216) >> 8;
|
||||
number1 = number1 + number2;
|
||||
},
|
||||
|
||||
'8' => {
|
||||
if flag { number2 = password; }
|
||||
flag = false;
|
||||
number1 = number2 & 0xFFFF;
|
||||
number1 = number1 << 16;
|
||||
number1 = number1 + (number2 >> 24);
|
||||
number2 = number2 & 0xFF0000;
|
||||
number2 = number2 >> 8;
|
||||
number1 = number1 + number2;
|
||||
},
|
||||
|
||||
'9' => {
|
||||
if flag { number2 = password; }
|
||||
flag = false;
|
||||
number1 = !number2;
|
||||
},
|
||||
|
||||
_ => {
|
||||
number1 = number2;
|
||||
},
|
||||
}
|
||||
number2 = number1;
|
||||
}
|
||||
|
||||
return number1 & M1;
|
||||
}
|
||||
|
||||
fn own_password_calculation_test(password: &str, nonce: &str, expected: i64) {
|
||||
let result = own_password_calculation(password.parse::<i64>().unwrap(), nonce);
|
||||
let message = format!("{} {} {} {}", password, nonce, result, expected);
|
||||
println!("{} {}", if result == expected { "PASS" } else { "FAIL" }, message);
|
||||
}
|
||||
|
||||
fn main() {
|
||||
own_password_calculation_test("12345", "603356072", 25280520);
|
||||
own_password_calculation_test("12345", "410501656", 119537670);
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue