dongzhi1904 2013-10-16 09:39
浏览 44
已采纳

从node.js移植MD5去[关闭]

I have an authentication logic in node.js

var crypto = require('crypto');

var SaltLength = 9;

function createHash(password) {
  var salt = generateSalt(SaltLength);
  var hash = md5(password + salt);
  return salt + hash;
}

function validateHash(hash, password) {
  var salt = hash.substr(0, SaltLength);
  var validHash = salt + md5(password + salt);
  return hash === validHash;
}

function generateSalt(len) {
  var set = '0123456789abcdefghijklmnopqurstuvwxyzABCDEFGHIJKLMNOPQURSTUVWXYZ',
      setLen = set.length,
      salt = '';
  for (var i = 0; i < len; i++) {
    var p = Math.floor(Math.random() * setLen);
    salt += set[p];
  }
  return salt;
}

function md5(string) {
  return crypto.createHash('md5').update(string).digest('hex');
}

How can I port it to Go?

  • 写回答

1条回答 默认 最新

  • doubingling4706 2013-10-16 09:45
    关注

    If you only need the standard md5 algorithm, here's how to use it in go, as noted in the documentation:

    import (
        "fmt"
        "crypto/md5"
        "io"
    )
    
    func main() {
        h := md5.New()
        io.WriteString(h, "The fog is getting thicker!")
        io.WriteString(h, "And Leon's getting laaarger!")
        fmt.Printf("%x", h.Sum(nil))
    }
    

    If you need an md5 function that returns a string, here's how to do it:

    func md5(input string) string {
        h := md5.New()
        io.WriteString(h, input)
        return fmt.Sprintf("%x", h.Sum(nil))
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 保护模式-系统加载-段寄存器