在javascript中隐藏我的哈希号
Posted
技术标签:
【中文标题】在javascript中隐藏我的哈希号【英文标题】:Hiding my hash number in javascript 【发布时间】:2018-03-30 05:23:51 【问题描述】:我正在尝试在客户端使用指纹,并将此代码作为更大代码的一部分。
function checksum(str)
var hash = 5382,
i = str.length;
while (i--) hash = (hash * 33) ^ str.charCodeAt(i);
return hash >>> 0;
如您所见,哈希值一目了然。你能告诉我如何或使用什么实现,以便我可以隐藏或任何可以掩盖哈希 = 5382 的东西。谢谢。
【问题讨论】:
只能混淆,不能真正“隐藏” 你可以使用CryptoJS
:***.com/questions/18279141/…
你需要像RSA这样的非对称算法。
请不要打扰...
将此计算带到服务器,毕竟javascript是浏览器的客户端语言。
【参考方案1】:
如果你用base64编码,但任何人都可以轻松解码。你的哈希值有多敏感?
str = "The quick brown fox jumps over the lazy dog";
b64 = btoa(unescape(encodeURIComponent(str)));
str = decodeURIComponent(escape(window.atob(b64)));
输出将是 VGhlIHF1aWNrIGJyb3duIGZveCBqdW1wcyBvdmVyIHRoZSBsYXp5IGRvZw==
如果您使用的是 php,您只需 base64_encode() 和 base64_decode() 即可处理。例如,您可以使用编码值隐藏输入,然后获取它的 val 并使用我给您的最后一行。
Base64 PHP http://php.net/manual/en/function.base64-encode.php 和 base64 JAVASCRIPT https://developer.mozilla.org/pt-BR/docs/Web/API/WindowBase64/atob 。或者你可以加密它的内容然后在服务器端解密它。这是一个加密/解密数据的小类(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));
你需要用 Javascript 解密,例如:How to use the Web Crypto API to decrypt a file created with OpenSSL?
【讨论】:
这看起来不错。你能告诉我它的示例实现吗? @stackquestions -- 请记住这是不安全的,任何客户端都可以自己重写脚本并查看结果。如果您的目标是隐藏字符串以防止不经意间的眼睛粗略检查,那很好,但它不会提供任何“真正的”安全性。 是的,谢谢指出,我忘了告诉他,但我问它有多敏感:) 你能不能给我看一下,或者只是给我一个话题,这样我就可以研究了。谢谢。以上是关于在javascript中隐藏我的哈希号的主要内容,如果未能解决你的问题,请参考以下文章