簡體   English   中英

Node.js中哈希字符串的Websafe編碼

[英]Websafe encoding of hashed string in nodejs

我正在nodejs中創建各種重定向器。 我有一些值,如userid // superid

這些我想散列,以防止用戶檢索url並偽造其他人的url,並且還進行base64編碼以最小化所創建的url的長度。

http://myurl.com/~hashedtoken未隱藏的hashtoken可能類似於以下內容55q322q23 55 = userid

我考慮過像這樣使用加密庫:

crypto.createHash('md5').update("55q322q23").digest("base64");

它返回:u / mxNJQaSs2HYJ5wirEZOQ ==這里的問題是我有/,它不被認為是網絡安全的,所以我想以某種方式從base64字母列表中剝離不安全的字母。 對這個問題有什么想法,或者也許可以更好地解決當前的問題?

您可以使用Base64的所謂URL安全變體。 RFC 4648中描述的最常見的變體使用-_分別代替+/ ,並且省略了填充字符( = )。

大多數Base64實現也支持此URL安全變體,盡管如果您不支持,則手動進行操作很容易。

這是我用的。 歡迎評論:-)

重要的一點是buffer.toString('base64'),然后使用幾個replace()對該URL進行安全的URL保護。

function newId() {
  // Get random string with 20 bytes secure randomness
  var crypto = require('crypto');
  var id = crypto.randomBytes(20).toString('base64');
  // Make URL safe
  return id.replace(/\+/g, '-').replace(/\//g, '_').replace(/=+$/, '');
}

基於這里的實現。

使字符串安全用於URL和本地電子郵件地址(@之前)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM