[英]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.