从字符串生成最多32个字节的替换

时间:2019-04-18 07:35:14

标签: javascript hash solidity

对于JavaScript中的字符串,我需要生成一个substirng,该substirng应该用作唯一的标识符(类似于哈希),从而降低了发生冲突的风险。但是,此哈希/子字符串的长度不应超过32个字节。

我需要这个,因为我必须将其存储在Solidity Smart Contract中作为该字符串的标识符。我发现有很多函数可以从JavaScript中的字符串获取和散列代码,但这不是我想要的。

10.9.0.18,tom,34.0.1.2:44395,Thu Apr 18 07:14:20 2019
10.9.0.10,jonas,84.32.45.2:44016,Thu Apr 18 07:16:06 2019
10.9.0.6,philip,23.56.222.3:55202,Thu Apr 18 07:16:06 2019
10.9.0.26,coolguy,12.34.56.7:53316,Thu Apr 18 07:16:06 2019

如果我有一个这样的字符串:“你好,这是一个聪明的问题”,我希望代表该字符串的哈希值,例如“ hllhsmrtqstin”。甚至可以小于32个字节,但是重要的是,无论字符串大小如何,都不要超过此长度。

我不是在寻找诸如sha256之类的东西,因为我需要一个可以被还原为原始字符串的人类readbale哈希,例如“ Hello World”>“ hlwld”

1 个答案:

答案 0 :(得分:1)

您可以替换一些物品,例如

  • is
  • aeou
  • 所有非字母
  • t后跟一个h字符。
Hello, this is a smart question
h ll    h        smr t q  sti n

var string = 'Hello, this is a smart question'
    result = string.toLowerCase().replace(/is|[aeou]|[^a-z]|t(?=h)/g, '');
   
console.log(result);