2017-10-18 15 views
6

Próbuję użyć drukowania odcisków palców po stronie klienta i uchwyciłem ten kod jako część większego kodu.Ukrywanie mojego numeru skrótu w javascript

function checksum(str) { 
    var hash = 5382, 
     i = str.length; 

    while (i--) hash = (hash * 33)^str.charCodeAt(i); 

    return hash >>> 0; 
} 

Jak widać, skrót jest widoczny. Czy możesz mi pokazać, jak lub jakiej implementacji użyć, aby ukryć lub cokolwiek, co może maskować hash = 5382. Dziękuję.

+3

Można jedynie ukrycie go, nie bardzo „ukryć” – haim770

+0

Można użyć 'CryptoJS': https://stackoverflow.com/questions/18279141/javascript-string-encryption-and-decryption –

+0

Potrzebujesz asymetrycznego algorytmu takiego jak [RSA] (http://www.ohdave.com/rsa/). – ceving

Odpowiedz

0

Jeśli zakodujesz go w base64, ale każdy może go łatwo odkodować. Jak wrażliwy jest twój skrót?

str = "The quick brown fox jumps over the lazy dog"; 
b64 = btoa(unescape(encodeURIComponent(str))); 
str = decodeURIComponent(escape(window.atob(b64))); 

Wyjście będzie VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw ==

Jeśli używasz PHP byś tylko base64_encode() i base64_decode(), aby obsłużyć. Możesz na przykład wprowadzić dane ukryte z zakodowaną wartością, a następnie po prostu uzyskać wartość val i użyć ostatniej linii, którą ci dałem.

Base64 PHP http://php.net/manual/en/function.base64-encode.php i base64 JAVASCRIPT https://developer.mozilla.org/pt-BR/docs/Web/API/WindowBase64/atob. Lub możesz zaszyfrować zawartość, a następnie odszyfruj ją po stronie serwera. Herezje trochę klasy szyfrowanie/deszyfrowanie danych (PHP):

<?php 
namespace Company\Security; 

/* 
* @description: Simple class to wrap crypt function calls 
* @author: Marco A. Simao 
*/ 

class Crypto { 

/* 
* returns encrypted data with iv appended at the begining of the string 
*/ 
public static function encrypt($data, $key) 
{ 
    $iv = openssl_random_pseudo_bytes(16); 

    $c = openssl_encrypt($data, 'AES-128-CBC', $key, OPENSSL_RAW_DATA, $iv); 

    return $iv . $c; 
} 

/* 
* returns decrypted data. Expects 16 first bytes of data to be iv table. 
*/ 
public static function decrypt($data, $key) 
{ 
    return openssl_decrypt(substr($data, 16), 'AES-128-CBC', $key, OPENSSL_RAW_DATA, substr($data, 0, 16)); 
} 
} 

I czy trzeba Deszyfruj w JavaScript jak: How to use the Web Crypto API to decrypt a file created with OpenSSL?

+0

To wydaje się dobre. Czy możesz pokazać mi przykładową implementację? –

+1

@stackquestions - Należy pamiętać, że nie jest to bezpieczne, każdy klient może sam przepisać skrypt i zobaczyć wynik. Jeśli twoim celem jest ukrycie sznurka przed pobieżną inspekcją z przypadkowych oczu, to w porządku, ale nie zapewni żadnego "prawdziwego" bezpieczeństwa. –

+0

Tak, dziękuję za wskazanie, zapomniałem mu powiedzieć, ale zapytałem, jak bardzo jest wrażliwy :) – Marco