Archived
first version of the website, it works as intended.
This commit is contained in:
9 files changed
+407
No files matched your search
+11
@@ -0,0 +1,11 @@
|
||||
<?php
|
||||
$config = [
|
||||
'db' => [
|
||||
'host' => '127.0.0.1',
|
||||
'port' => 3306,
|
||||
'username' => 'database_user',
|
||||
'password' => 'database_password',
|
||||
'name' => 'my_database_name',
|
||||
],
|
||||
];
|
||||
?>
|
||||
@@ -0,0 +1,11 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>Oops, you're lost!</title>
|
||||
</head>
|
||||
<body>
|
||||
<center>
|
||||
<h1>404: Page not found!</h1>
|
||||
</center>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,27 @@
|
||||
<?php
|
||||
require_once ( 'config.php' );
|
||||
function db_connect ( ) {
|
||||
global $config;
|
||||
$connection = new MySQLi ( $config [ 'db' ] [ 'host' ], $config [ 'db' ] [ 'username' ], $config [ 'db' ] [ 'password' ], $config [ 'db' ] [ 'name' ], $config [ 'db' ] [ 'port' ] );
|
||||
if ( $connection->connect_errno ) {
|
||||
die ( "Database connection failed." );
|
||||
}
|
||||
return $connection;
|
||||
}
|
||||
function db_prepare ( MySQLi $connection, string $query ) {
|
||||
if ( ! ( $statement = $connection -> prepare ( $query ) ) ) {
|
||||
die ( "Prepare failed: (" . $connection->errno . ") " . $connection->error );
|
||||
}
|
||||
return $statement;
|
||||
}
|
||||
function db_bind ( MySQLi_stmt $statement, array $params ) {
|
||||
if ( ! call_user_func_array ( array ( $statement, "bind_param" ), array_merge ( $params [ 0 ], $params [ 1 ] ) ) ) {
|
||||
die ( "Binding parameters failed: (" . $statement->errno . ") " . $statement->error );
|
||||
}
|
||||
}
|
||||
function db_execute ( $statement ) {
|
||||
if ( ! $statement->execute ( ) ) {
|
||||
die ( "Execute failed: (" . $statement->errno . ") " . $statement->error );
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,22 @@
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title id="title">Redirect in 5 seconds</title>
|
||||
</head>
|
||||
<body>
|
||||
<center>
|
||||
<h1 id="body-timeout">You will be redirected to ... in 5</h1>
|
||||
</center>
|
||||
<script>
|
||||
var seconds = 5;
|
||||
function update_timeout () {
|
||||
document.getElementById("title").innerHTML = "Redirect in "+seconds+" seconds";
|
||||
document.getElementById("body-timeout").innerHTML = "You will be redirected to ... in "+seconds;
|
||||
if (seconds == 0) {
|
||||
window.location.href = my_location;
|
||||
}
|
||||
}
|
||||
setInterval (function() {update_timeout(); seconds = seconds - 1;}, 1000);
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,143 @@
|
||||
<?php
|
||||
session_start ( );
|
||||
require_once ( 'config.php' );
|
||||
require_once ( 'functions.php' );
|
||||
if ( isset ( $_GET [ 'go' ] ) ) {
|
||||
$link_id = $_GET [ 'go' ];
|
||||
$link_id = (int) $link_id;
|
||||
if ( ! is_int ( $link_id ) ) {
|
||||
die ( "You can't be forwarded to a non numerical URL link ID. If you think this is incorrect, please send an email to shorte@dev.bryanpedini.it with this URL: https://sh.bjphoster.com/?go=" . $link_id . " for more investigations" );
|
||||
}
|
||||
$db_connection = db_connect ( );
|
||||
$statement = db_prepare ( $db_connection, "SELECT links.URL FROM links WHERE links.ID = ?" );
|
||||
$parameters = [
|
||||
[ "i" ],
|
||||
[ &$link_id ],
|
||||
];
|
||||
db_bind ( $statement, $parameters );
|
||||
db_execute ( $statement );
|
||||
$result = $statement->get_result ( );
|
||||
$row = $result->fetch_assoc ( );
|
||||
if ( ! $row ) {
|
||||
include ( 'errors/404.html' );
|
||||
}
|
||||
else {
|
||||
include ( 'includes/redirect.html' );
|
||||
echo ( '<script>var my_location = "' . $row [ 'URL' ] . '";</script>' );
|
||||
}
|
||||
}
|
||||
elseif ( isset ( $_REQUEST [ 'username' ] ) && isset ( $_REQUEST [ 'password' ] ) ) {
|
||||
$username = $_REQUEST [ 'username' ];
|
||||
$password = $_REQUEST [ 'password' ];
|
||||
$db_connection = db_connect ( );
|
||||
$statement = db_prepare ( $db_connection, "SELECT users.id FROM users WHERE users.username = ? AND users.password = ?" );
|
||||
$parameters = [
|
||||
[ "ss" ],
|
||||
[ &$username, &$password ],
|
||||
];
|
||||
db_bind ( $statement, $parameters );
|
||||
db_execute ( $statement );
|
||||
$result = $statement->get_result ( );
|
||||
$row = $result->fetch_assoc ( );
|
||||
if ( ! $row ) {
|
||||
header ( 'Content-Type: application/json' );
|
||||
$response = [
|
||||
'status' => 401,
|
||||
'error_message' => 'Username or password not correct.',
|
||||
];
|
||||
echo ( json_encode ( $response ) );
|
||||
}
|
||||
else {
|
||||
$_SESSION [ 'user_id' ] = $row [ 'id' ];
|
||||
header ( 'Content-Type: application/json' );
|
||||
$response = [
|
||||
'status' => 200,
|
||||
'message' => 'Authentication succesfully executed.',
|
||||
];
|
||||
echo ( json_encode ( $response ) );
|
||||
}
|
||||
}
|
||||
elseif ( isset ( $_GET [ 'logout' ] ) ) {
|
||||
$_SESSION = array ( );
|
||||
session_destroy ( );
|
||||
header ( "Location: /" );
|
||||
}
|
||||
else {
|
||||
if ( ! isset ( $_SESSION [ 'user_id' ] ) ) {
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>BJPHoster URL Shortener | Login</title>
|
||||
</head>
|
||||
<body>
|
||||
<input type="text" id="form-username"><br>
|
||||
<input type="password" id="form-password"><br>
|
||||
<button onclick="login()">Login</button><br>
|
||||
<div id="responsetext"></div>
|
||||
<script src="js/sha512.min.js"></script>
|
||||
<script src="js/login.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
else {
|
||||
if ( isset ( $_POST [ 'url' ] ) ) {
|
||||
$url = $_POST [ 'url' ];
|
||||
$db_connection = db_connect ( );
|
||||
$statement = db_prepare ( $db_connection, "INSERT INTO `links` ( `ID`, `URL`, `created_by` ) VALUES ( NULL, ?, " . $_SESSION [ 'user_id' ] . " );" );
|
||||
$parameters = [
|
||||
[ "s" ],
|
||||
[ &$url ],
|
||||
];
|
||||
db_bind ( $statement, $parameters );
|
||||
db_execute ( $statement );
|
||||
$statement = db_prepare ( $db_connection, "SELECT COUNT( links.ID ) as `count` FROM links;");
|
||||
db_execute ( $statement );
|
||||
$result = $statement->get_result ( );
|
||||
$row = $result->fetch_assoc ( );
|
||||
header ( 'Content-Type: application/json' );
|
||||
$response = [
|
||||
'status' => 200,
|
||||
'message' => 'URL inserted correctly.',
|
||||
'new_id' => $row [ 'count' ],
|
||||
];
|
||||
echo ( json_encode ( $response ) );
|
||||
}
|
||||
else {
|
||||
$db_connection = db_connect ( );
|
||||
$statement = db_prepare ( $db_connection, "SELECT links.ID, links.URL FROM links WHERE links.created_by = " . $_SESSION [ 'user_id' ] );
|
||||
db_execute ( $statement );
|
||||
$result = $statement->get_result ( );
|
||||
$row = $result->fetch_assoc ( );
|
||||
?>
|
||||
<!DOCTYPE html>
|
||||
<html>
|
||||
<head>
|
||||
<title>BJPHoster URL Shortener | Control Panel</title>
|
||||
</head>
|
||||
<body>
|
||||
<button onclick="logout()">Logout</button>
|
||||
<div id="urllist">
|
||||
<?php
|
||||
if ( ! $row ) {
|
||||
echo ( "You have not created any URL yet.<br>" );
|
||||
}
|
||||
else {
|
||||
do {
|
||||
echo ( "\t\t\t" . '<div>' . $row [ 'ID' ] . " | " . $row [ 'URL' ] . "</div>\n" );
|
||||
} while ( $row = $result->fetch_assoc ( ) );
|
||||
}
|
||||
?>
|
||||
</div>
|
||||
<input type="text" id="form-url" placeholder="URL:">
|
||||
<button onclick="urlinsert()">Insert new URL</button><br>
|
||||
<div id="responsetext"></div>
|
||||
<script src="js/insertnew.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
<?php
|
||||
}
|
||||
}
|
||||
}
|
||||
?>
|
||||
@@ -0,0 +1,32 @@
|
||||
function urlinsert() {
|
||||
var url = document.getElementById ( "form-url" ).value;
|
||||
var xhr = new XMLHttpRequest ( );
|
||||
xhr.open ( "POST", 'index.php', true );
|
||||
xhr.onreadystatechange = function ( ) {
|
||||
if ( xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200 ) {
|
||||
if (xhr.status == 200) {
|
||||
var response = xhr.responseText;
|
||||
response = JSON.parse ( response );
|
||||
if ( response [ 'status' ] == 200 ) {
|
||||
document.getElementById ( "responsetext" ).innerHTML = response [ 'message' ];
|
||||
var div = document.createElement ( 'div' );
|
||||
div.innerHTML = response [ 'new_id' ] + " | " + url;
|
||||
document.getElementById ( "urllist" ).appendChild ( div );
|
||||
document.getElementById ( "form-url" ).value = "";
|
||||
}
|
||||
else {
|
||||
document.getElementById ( "responsetext" ).innerHTML = response [ 'error_message' ];
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.log ( 'Server communication error: ' + xhr.statusText );
|
||||
}
|
||||
}
|
||||
}
|
||||
data = new FormData ( );
|
||||
data.append('url', url);
|
||||
xhr.send( data );
|
||||
}
|
||||
function logout ( ) {
|
||||
window.location.href = "/?logout";
|
||||
}
|
||||
+28
@@ -0,0 +1,28 @@
|
||||
function login() {
|
||||
var username = document.getElementById ( "form-username" ).value;
|
||||
var password = document.getElementById ( "form-password" ).value;
|
||||
password = SHA512 ( password );
|
||||
var xhr = new XMLHttpRequest ( );
|
||||
xhr.open ( "POST", 'index.php', true );
|
||||
xhr.onreadystatechange = function ( ) {
|
||||
if ( xhr.readyState == XMLHttpRequest.DONE && xhr.status == 200 ) {
|
||||
if (xhr.status == 200) {
|
||||
var response = xhr.responseText;
|
||||
response = JSON.parse ( response );
|
||||
if ( response [ 'status' ] == 200 ) {
|
||||
window.location.href = "/";
|
||||
}
|
||||
else {
|
||||
document.getElementById ( "responsetext" ).innerHTML = response [ 'error_message' ];
|
||||
}
|
||||
}
|
||||
else {
|
||||
console.log ( 'Server communication error: ' + xhr.statusText );
|
||||
}
|
||||
}
|
||||
}
|
||||
data = new FormData ( );
|
||||
data.append('username', username);
|
||||
data.append('password', password);
|
||||
xhr.send( data );
|
||||
}
|
||||
+132
@@ -0,0 +1,132 @@
|
||||
function SHA512 ( str )
|
||||
{
|
||||
function int64 ( msint_32, lsint_32 ) {
|
||||
this.highOrder = msint_32;
|
||||
this.lowOrder = lsint_32;
|
||||
}
|
||||
var H = [
|
||||
new int64 ( 0x6a09e667, 0xf3bcc908 ),
|
||||
new int64 ( 0xbb67ae85, 0x84caa73b ),
|
||||
new int64 ( 0x3c6ef372, 0xfe94f82b ),
|
||||
new int64 ( 0xa54ff53a, 0x5f1d36f1 ),
|
||||
new int64 ( 0x510e527f, 0xade682d1 ),
|
||||
new int64 ( 0x9b05688c, 0x2b3e6c1f ),
|
||||
new int64 ( 0x1f83d9ab, 0xfb41bd6b ),
|
||||
new int64 ( 0x5be0cd19, 0x137e2179 )
|
||||
];
|
||||
var K = [
|
||||
new int64(0x428a2f98,0xd728ae22),
|
||||
new int64(0x71374491,0x23ef65cd),
|
||||
new int64(0xb5c0fbcf,0xec4d3b2f),
|
||||
new int64(0xe9b5dba5,0x8189dbbc),
|
||||
new int64(0x3956c25b,0xf348b538),
|
||||
new int64(0x59f111f1,0xb605d019),
|
||||
new int64(0x923f82a4,0xaf194f9b),
|
||||
new int64(0xab1c5ed5,0xda6d8118),
|
||||
new int64(0xd807aa98,0xa3030242),
|
||||
new int64(0x12835b01,0x45706fbe),
|
||||
new int64(0x243185be,0x4ee4b28c),
|
||||
new int64(0x550c7dc3,0xd5ffb4e2),
|
||||
new int64(0x72be5d74,0xf27b896f),
|
||||
new int64(0x80deb1fe,0x3b1696b1),
|
||||
new int64(0x9bdc06a7,0x25c71235),
|
||||
new int64(0xc19bf174,0xcf692694),
|
||||
new int64(0xe49b69c1,0x9ef14ad2),
|
||||
new int64(0xefbe4786,0x384f25e3),
|
||||
new int64(0x0fc19dc6,0x8b8cd5b5),
|
||||
new int64(0x240ca1cc,0x77ac9c65),
|
||||
new int64(0x2de92c6f,0x592b0275),
|
||||
new int64(0x4a7484aa,0x6ea6e483),
|
||||
new int64(0x5cb0a9dc,0xbd41fbd4),
|
||||
new int64(0x76f988da,0x831153b5),
|
||||
new int64(0x983e5152,0xee66dfab),
|
||||
new int64(0xa831c66d,0x2db43210),
|
||||
new int64(0xb00327c8,0x98fb213f),
|
||||
new int64(0xbf597fc7,0xbeef0ee4),
|
||||
new int64(0xc6e00bf3,0x3da88fc2),
|
||||
new int64(0xd5a79147,0x930aa725),
|
||||
new int64(0x06ca6351,0xe003826f),
|
||||
new int64(0x14292967,0x0a0e6e70),
|
||||
new int64(0x27b70a85,0x46d22ffc),
|
||||
new int64(0x2e1b2138,0x5c26c926),
|
||||
new int64(0x4d2c6dfc,0x5ac42aed),
|
||||
new int64(0x53380d13,0x9d95b3df),
|
||||
new int64(0x650a7354,0x8baf63de),
|
||||
new int64(0x766a0abb,0x3c77b2a8),
|
||||
new int64(0x81c2c92e,0x47edaee6),
|
||||
new int64(0x92722c85,0x1482353b),
|
||||
new int64(0xa2bfe8a1,0x4cf10364),
|
||||
new int64(0xa81a664b,0xbc423001),
|
||||
new int64(0xc24b8b70,0xd0f89791),
|
||||
new int64(0xc76c51a3,0x0654be30),
|
||||
new int64(0xd192e819,0xd6ef5218),
|
||||
new int64(0xd6990624,0x5565a910),
|
||||
new int64(0xf40e3585,0x5771202a),
|
||||
new int64(0x106aa070,0x32bbd1b8),
|
||||
new int64(0x19a4c116,0xb8d2d0c8),
|
||||
new int64(0x1e376c08,0x5141ab53),
|
||||
new int64(0x2748774c,0xdf8eeb99),
|
||||
new int64(0x34b0bcb5,0xe19b48a8),
|
||||
new int64(0x391c0cb3,0xc5c95a63),
|
||||
new int64(0x4ed8aa4a,0xe3418acb),
|
||||
new int64(0x5b9cca4f,0x7763e373),
|
||||
new int64(0x682e6ff3,0xd6b2b8a3),
|
||||
new int64(0x748f82ee,0x5defb2fc),
|
||||
new int64(0x78a5636f,0x43172f60),
|
||||
new int64(0x84c87814,0xa1f0ab72),
|
||||
new int64(0x8cc70208,0x1a6439ec),
|
||||
new int64(0x90befffa,0x23631e28),
|
||||
new int64(0xa4506ceb,0xde82bde9),
|
||||
new int64(0xbef9a3f7,0xb2c67915),
|
||||
new int64(0xc67178f2,0xe372532b),
|
||||
new int64(0xca273ece,0xea26619c),
|
||||
new int64(0xd186b8c7,0x21c0c207),
|
||||
new int64(0xeada7dd6,0xcde0eb1e),
|
||||
new int64(0xf57d4f7f,0xee6ed178),
|
||||
new int64(0x06f067aa,0x72176fba),
|
||||
new int64(0x0a637dc5,0xa2c898a6),
|
||||
new int64(0x113f9804,0xbef90dae),
|
||||
new int64(0x1b710b35,0x131c471b),
|
||||
new int64(0x28db77f5,0x23047d84),
|
||||
new int64(0x32caab7b,0x40c72493),
|
||||
new int64(0x3c9ebe0a,0x15c9bebc),
|
||||
new int64(0x431d67c4,0x9c100d4c),
|
||||
new int64(0x4cc5d4be,0xcb3e42b6),
|
||||
new int64(0x597f299c,0xfc657e2a),
|
||||
new int64(0x5fcb6fab,0x3ad6faec),
|
||||
new int64(0x6c44198c,0x4a475817)
|
||||
];
|
||||
var W = new Array ( 64 );
|
||||
var a, b, c, d, e, f, g, h, i, j;
|
||||
var T1, T2;
|
||||
var charsize = 8;
|
||||
function utf8_encode ( str ) {
|
||||
return unescape ( encodeURIComponent ( str ) );
|
||||
}
|
||||
function str2binb ( str ) {
|
||||
var bin = [];
|
||||
var mask = ( 1 << charsize ) - 1;
|
||||
var len = str.length * charsize;
|
||||
for ( var i = 0; i < len; i += charsize ) {
|
||||
bin [ i >> 5 ] |= ( str.charCodeAt ( i / charsize ) &mask ) << ( 32 - charsize - ( i % 32 ) );
|
||||
}
|
||||
return bin;
|
||||
}
|
||||
function binb2hex(binarray){var hex_tab='0123456789abcdef';var str='';var length=binarray.length*4;var srcByte;for(var i=0;i<length;i+=1){srcByte=binarray[i>>2]>>((3-(i % 4))*8);str+=hex_tab.charAt((srcByte>>4)&0xF)+hex_tab.charAt(srcByte&0xF);} return str;}
|
||||
function safe_add_2(x,y){var lsw,msw,lowOrder,highOrder;lsw=(x.lowOrder&0xFFFF)+(y.lowOrder&0xFFFF);msw=(x.lowOrder>>>16)+(y.lowOrder>>>16)+(lsw>>>16);lowOrder=((msw&0xFFFF)<<16)|(lsw&0xFFFF);lsw=(x.highOrder&0xFFFF)+(y.highOrder&0xFFFF)+(msw>>>16);msw=(x.highOrder>>>16)+(y.highOrder>>>16)+(lsw>>>16);highOrder=((msw&0xFFFF)<<16)|(lsw&0xFFFF);return new int64(highOrder,lowOrder);}
|
||||
function safe_add_4(a,b,c,d){var lsw,msw,lowOrder,highOrder;lsw=(a.lowOrder&0xFFFF)+(b.lowOrder&0xFFFF)+(c.lowOrder&0xFFFF)+(d.lowOrder&0xFFFF);msw=(a.lowOrder>>>16)+(b.lowOrder>>>16)+(c.lowOrder>>>16)+(d.lowOrder>>>16)+(lsw>>>16);lowOrder=((msw&0xFFFF)<<16)|(lsw&0xFFFF);lsw=(a.highOrder&0xFFFF)+(b.highOrder&0xFFFF)+(c.highOrder&0xFFFF)+(d.highOrder&0xFFFF)+(msw>>>16);msw=(a.highOrder>>>16)+(b.highOrder>>>16)+(c.highOrder>>>16)+(d.highOrder>>>16)+(lsw>>>16);highOrder=((msw&0xFFFF)<<16)|(lsw&0xFFFF);return new int64(highOrder,lowOrder);}
|
||||
function safe_add_5(a,b,c,d,e){var lsw,msw,lowOrder,highOrder;lsw=(a.lowOrder&0xFFFF)+(b.lowOrder&0xFFFF)+(c.lowOrder&0xFFFF)+(d.lowOrder&0xFFFF)+(e.lowOrder&0xFFFF);msw=(a.lowOrder>>>16)+(b.lowOrder>>>16)+(c.lowOrder>>>16)+(d.lowOrder>>>16)+(e.lowOrder>>>16)+(lsw>>>16);lowOrder=((msw&0xFFFF)<<16)|(lsw&0xFFFF);lsw=(a.highOrder&0xFFFF)+(b.highOrder&0xFFFF)+(c.highOrder&0xFFFF)+(d.highOrder&0xFFFF)+(e.highOrder&0xFFFF)+(msw>>>16);msw=(a.highOrder>>>16)+(b.highOrder>>>16)+(c.highOrder>>>16)+(d.highOrder>>>16)+(e.highOrder>>>16)+(lsw>>>16);highOrder=((msw&0xFFFF)<<16)|(lsw&0xFFFF);return new int64(highOrder,lowOrder);}
|
||||
function maj(x,y,z){return new int64((x.highOrder&y.highOrder)^(x.highOrder&z.highOrder)^(y.highOrder&z.highOrder),(x.lowOrder&y.lowOrder)^(x.lowOrder&z.lowOrder)^(y.lowOrder&z.lowOrder));}
|
||||
function ch(x,y,z){return new int64((x.highOrder&y.highOrder)^(~x.highOrder&z.highOrder),(x.lowOrder&y.lowOrder)^(~x.lowOrder&z.lowOrder));}
|
||||
function rotr(x,n){if(n<=32){return new int64((x.highOrder>>>n)|(x.lowOrder<<(32-n)),(x.lowOrder>>>n)|(x.highOrder<<(32-n)));}else{return new int64((x.lowOrder>>>n)|(x.highOrder<<(32-n)),(x.highOrder>>>n)|(x.lowOrder<<(32-n)));}}
|
||||
function sigma0(x){var rotr28=rotr(x,28);var rotr34=rotr(x,34);var rotr39=rotr(x,39);return new int64(rotr28.highOrder^rotr34.highOrder^rotr39.highOrder,rotr28.lowOrder^rotr34.lowOrder^rotr39.lowOrder);}
|
||||
function sigma1(x){var rotr14=rotr(x,14);var rotr18=rotr(x,18);var rotr41=rotr(x,41);return new int64(rotr14.highOrder^rotr18.highOrder^rotr41.highOrder,rotr14.lowOrder^rotr18.lowOrder^rotr41.lowOrder);}
|
||||
function gamma0(x){var rotr1=rotr(x,1),rotr8=rotr(x,8),shr7=shr(x,7);return new int64(rotr1.highOrder^rotr8.highOrder^shr7.highOrder,rotr1.lowOrder^rotr8.lowOrder^shr7.lowOrder);}
|
||||
function gamma1(x){var rotr19=rotr(x,19);var rotr61=rotr(x,61);var shr6=shr(x,6);return new int64(rotr19.highOrder^rotr61.highOrder^shr6.highOrder,rotr19.lowOrder^rotr61.lowOrder^shr6.lowOrder);}
|
||||
function shr(x,n){if(n<=32){return new int64(x.highOrder>>>n,x.lowOrder>>>n|(x.highOrder<<(32-n)));}else{return new int64(0,x.highOrder<<(32-n));}}
|
||||
str=utf8_encode(str);strlen=str.length*charsize;str=str2binb(str);str[strlen>>5]|=0x80<<(24-strlen % 32);str[(((strlen+128)>>10)<<5)+31]=strlen;for(var i=0;i<str.length;i+=32){a=H[0];b=H[1];c=H[2];d=H[3];e=H[4];f=H[5];g=H[6];h=H[7];for(var j=0;j<80;j++){if(j<16){W[j]=new int64(str[j*2+i],str[j*2+i+1]);}else{W[j]=safe_add_4(gamma1(W[j-2]),W[j-7],gamma0(W[j-15]),W[j-16]);}
|
||||
T1=safe_add_5(h,sigma1(e),ch(e,f,g),K[j],W[j]);T2=safe_add_2(sigma0(a),maj(a,b,c));h=g;g=f;f=e;e=safe_add_2(d,T1);d=c;c=b;b=a;a=safe_add_2(T1,T2);}
|
||||
H[0]=safe_add_2(a,H[0]);H[1]=safe_add_2(b,H[1]);H[2]=safe_add_2(c,H[2]);H[3]=safe_add_2(d,H[3]);H[4]=safe_add_2(e,H[4]);H[5]=safe_add_2(f,H[5]);H[6]=safe_add_2(g,H[6]);H[7]=safe_add_2(h,H[7]);}
|
||||
var binarray=[];for(var i=0;i<H.length;i++){binarray.push(H[i].highOrder);binarray.push(H[i].lowOrder);}
|
||||
return binb2hex ( binarray );
|
||||
}
|
||||
Vendored
+1
@@ -0,0 +1 @@
|
||||
function SHA512(r){function e(r,e){this.highOrder=r,this.lowOrder=e}var w,n,d,h,O,o,i,l,g,t,v,u,a,c,f,s,A,p,C,b,m,y,H,I,R,S,U,j,k,q,x,z,B,D,E,F,G,J,K,L,M,N,P,Q,T,V,W,X=[new e(1779033703,4089235720),new e(3144134277,2227873595),new e(1013904242,4271175723),new e(2773480762,1595750129),new e(1359893119,2917565137),new e(2600822924,725511199),new e(528734635,4215389547),new e(1541459225,327033209)],Y=[new e(1116352408,3609767458),new e(1899447441,602891725),new e(3049323471,3964484399),new e(3921009573,2173295548),new e(961987163,4081628472),new e(1508970993,3053834265),new e(2453635748,2937671579),new e(2870763221,3664609560),new e(3624381080,2734883394),new e(310598401,1164996542),new e(607225278,1323610764),new e(1426881987,3590304994),new e(1925078388,4068182383),new e(2162078206,991336113),new e(2614888103,633803317),new e(3248222580,3479774868),new e(3835390401,2666613458),new e(4022224774,944711139),new e(264347078,2341262773),new e(604807628,2007800933),new e(770255983,1495990901),new e(1249150122,1856431235),new e(1555081692,3175218132),new e(1996064986,2198950837),new e(2554220882,3999719339),new e(2821834349,766784016),new e(2952996808,2566594879),new e(3210313671,3203337956),new e(3336571891,1034457026),new e(3584528711,2466948901),new e(113926993,3758326383),new e(338241895,168717936),new e(666307205,1188179964),new e(773529912,1546045734),new e(1294757372,1522805485),new e(1396182291,2643833823),new e(1695183700,2343527390),new e(1986661051,1014477480),new e(2177026350,1206759142),new e(2456956037,344077627),new e(2730485921,1290863460),new e(2820302411,3158454273),new e(3259730800,3505952657),new e(3345764771,106217008),new e(3516065817,3606008344),new e(3600352804,1432725776),new e(4094571909,1467031594),new e(275423344,851169720),new e(430227734,3100823752),new e(506948616,1363258195),new e(659060556,3750685593),new e(883997877,3785050280),new e(958139571,3318307427),new e(1322822218,3812723403),new e(1537002063,2003034995),new e(1747873779,3602036899),new e(1955562222,1575990012),new e(2024104815,1125592928),new e(2227730452,2716904306),new e(2361852424,442776044),new e(2428436474,593698344),new e(2756734187,3733110249),new e(3204031479,2999351573),new e(3329325298,3815920427),new e(3391569614,3928383900),new e(3515267271,566280711),new e(3940187606,3454069534),new e(4118630271,4000239992),new e(116418474,1914138554),new e(174292421,2731055270),new e(289380356,3203993006),new e(460393269,320620315),new e(685471733,587496836),new e(852142971,1086792851),new e(1017036298,365543100),new e(1126000580,2618297676),new e(1288033470,3409855158),new e(1501505948,4234509866),new e(1607167915,987167468),new e(1816402316,1246189591)],Z=new Array(64),$=8;function _(r,w){var n,d,h;return n=(65535&r.lowOrder)+(65535&w.lowOrder),h=(65535&(d=(r.lowOrder>>>16)+(w.lowOrder>>>16)+(n>>>16)))<<16|65535&n,n=(65535&r.highOrder)+(65535&w.highOrder)+(d>>>16),new e((65535&(d=(r.highOrder>>>16)+(w.highOrder>>>16)+(n>>>16)))<<16|65535&n,h)}function rr(r,w){return w<=32?new e(r.highOrder>>>w|r.lowOrder<<32-w,r.lowOrder>>>w|r.highOrder<<32-w):new e(r.lowOrder>>>w|r.highOrder<<32-w,r.highOrder>>>w|r.lowOrder<<32-w)}function er(r,w){return w<=32?new e(r.highOrder>>>w,r.lowOrder>>>w|r.highOrder<<32-w):new e(0,r.highOrder<<32-w)}r=unescape(encodeURIComponent(r)),strlen=r.length*$,(r=function(r){for(var e=[],w=(1<<$)-1,n=r.length*$,d=0;d<n;d+=$)e[d>>5]|=(r.charCodeAt(d/$)&w)<<32-$-d%32;return e}(r))[strlen>>5]|=128<<24-strlen%32,r[31+(strlen+128>>10<<5)]=strlen;for(var wr=0;wr<r.length;wr+=32){w=X[0],n=X[1],d=X[2],h=X[3],O=X[4],o=X[5],i=X[6],l=X[7];for(var nr=0;nr<80;nr++)Z[nr]=nr<16?new e(r[2*nr+wr],r[2*nr+wr+1]):(Q=Z[nr-2],void 0,void 0,void 0,T=rr(Q,19),V=rr(Q,61),W=er(Q,6),B=new e(T.highOrder^V.highOrder^W.highOrder,T.lowOrder^V.lowOrder^W.lowOrder),D=Z[nr-7],L=Z[nr-15],void 0,void 0,void 0,M=rr(L,1),N=rr(L,8),P=er(L,7),E=new e(M.highOrder^N.highOrder^P.highOrder,M.lowOrder^N.lowOrder^P.lowOrder),F=Z[nr-16],G=void 0,J=void 0,K=void 0,G=(65535&B.lowOrder)+(65535&D.lowOrder)+(65535&E.lowOrder)+(65535&F.lowOrder),K=(65535&(J=(B.lowOrder>>>16)+(D.lowOrder>>>16)+(E.lowOrder>>>16)+(F.lowOrder>>>16)+(G>>>16)))<<16|65535&G,G=(65535&B.highOrder)+(65535&D.highOrder)+(65535&E.highOrder)+(65535&F.highOrder)+(J>>>16),new e((65535&(J=(B.highOrder>>>16)+(D.highOrder>>>16)+(E.highOrder>>>16)+(F.highOrder>>>16)+(G>>>16)))<<16|65535&G,K)),p=l,void 0,void 0,void 0,q=rr(k=O,14),x=rr(k,18),z=rr(k,41),C=new e(q.highOrder^x.highOrder^z.highOrder,q.lowOrder^x.lowOrder^z.lowOrder),U=o,j=i,b=new e((S=O).highOrder&U.highOrder^~S.highOrder&j.highOrder,S.lowOrder&U.lowOrder^~S.lowOrder&j.lowOrder),m=Y[nr],y=Z[nr],H=void 0,I=void 0,R=void 0,H=(65535&p.lowOrder)+(65535&C.lowOrder)+(65535&b.lowOrder)+(65535&m.lowOrder)+(65535&y.lowOrder),R=(65535&(I=(p.lowOrder>>>16)+(C.lowOrder>>>16)+(b.lowOrder>>>16)+(m.lowOrder>>>16)+(y.lowOrder>>>16)+(H>>>16)))<<16|65535&H,H=(65535&p.highOrder)+(65535&C.highOrder)+(65535&b.highOrder)+(65535&m.highOrder)+(65535&y.highLine truncated
|
||||
Reference in new issue
Block a user