Articles of 去

Golang从NodeJS解密AES 256 CBC base64

这是我在Node.js中的: var crypto = require('crypto') function encryptstring(str) { var cipher = crypto.createCipheriv('aes-256-cbc', 'NFd6N3v1nbL47FK0xpZjxZ7NY4fYpNYd', 'TestingIV1234567'), encrypted = cipher.update(str, 'utf-8', 'base64'); encrypted += cipher.final('base64'); return encrypted; } console.log(encryptstring("Testing 111111111111111111111111111111111111111111")) 返回: w2f0vBP2hRfgVqssqOluk68Qxkc9LXFESc0ZGzPBq3p6f/x/LbwBbg1XOoRr7I/DAtESJGdweKG6nL9m8RfewA== 这就是我在Go上所拥有的: package main import ( "crypto/aes" "crypto/cipher" "encoding/base64" "fmt" ) // decrypt from base64 to decrypted string func decrypt(key []byte, iv []byte, cryptoText string) string { […]

什么是websocket的最佳工具?

我有我的项目中的通知node.js。 我使用socket.io和redis pub / sub。 我喜欢socket.io,因为它给我所有types的传输(websocket,长轮询等)的一个接口,它给了我crossbrowser客户端库。 但是我在调​​试nodejs上的代码时遇到了很多问题。 我经常遇到CPU问题,很难找出原因。 这就是为什么我想用工具而不是node.js也许去或erlang,但我找不到工具,如这些语言上的socket.io

golang tcp socket – 处理多个消息

我有这个Go tcp套接字 package main import ( "fmt" "io" "log" "net" "bytes" ) func main() { l, err := net.Listen("tcp", ":1200") if err != nil { log.Fatal(err) } defer l.Close() for { conn, err := l.Accept() if err != nil { log.Fatal(err) } go func(c net.Conn) { var buf bytes.Buffer io.Copy(&buf, c) fmt.Println("total size:", buf.Len()) s […]

一个语言或库中创build的jwt能否被解码和validation?

所以我有一个使用golang和jwt-go库来发布jwt的API服务器,我想要一个使用node.js和jsonwebtoken库运行的socket.io服务器,需要解码和validation令牌,所以我的问题是我从一个库发出一个令牌,从另一个库解码和validation它?

Go会阻止像Node这样的处理器密集型操作吗?

Go对于并发是很好的,任务作为例行程序传递,并且例行程序在虚拟处理器中处理,每当一个例行程序遇到阻塞操作(数据库调用)时,将例行程序移动到另一个虚拟处理器在不同的线程上,这是大多数时间在另一个物理处理器上运行的…现在,我们实现了并行性。 Node.js有一个类似的技术(除了一切发生在同一个线程上),但是把所有正在等待的虚拟进程放在一个等待队列中,直到它们从阻塞资源(DB,URL)接收到响应,然后发送它们进行处理。 Node.js的缺点是无法处理处理器密集型操作(for循环就是一个例子),而虚拟进程正在运行,所有的时间都将耗尽,直到完成而没有抢占,这就是为什么Node.js是明智的在用于关键系统之前,尽pipe它具有很高的并发可用性。 是的,Go产生了一个新的线程来处理阻塞执行程序,但是处理器密集型操作又是如何被认为是相同的,还是会受到Node问题的困扰?

去朗生成hmac

我是新来的语言,我需要用go语言创build一个Hmac。 我在nodejs中创build了一个Hmac,需要用go语言生成相同的Hamc。 尝试下面的代码,但得到完全不同的输出。 我不知道我做错了什么。 这是我的尝试 package main import ( "crypto/hmac" "crypto/sha256" "encoding/base64" "fmt" ) func ComputeHmac256(message string, secret string) string { key := []byte(secret) h := hmac.New(sha256.New, key) h.Write([]byte(message)) return base64.StdEncoding.EncodeToString(h.Sum(nil)) } func main() { fmt.Println(ComputeHmac256("sms1", "b5fb5b3a65b8429693c3a029308e2e46")) } Output: JVN7kUPFL0aQ09lIH4YOsFJA3A2faqTuu6zIaYo61VI= 需要去下面的nodejs代码 var crypto = require('crypto'), text = 'sms1', key = 'b5fb5b3a65b8429693c3a029308e2e46' var hash = crypto.createHmac('sha256', […]

从nodejs grpc客户端连接到在tls中启用的grpc服务器

我有一个grpc服务器写在走在tls模式下运行。 如果我想从nodejs客户端连接到服务器而不validation服务器的证书链和主机名。 我如何做到这一点? (这是通过在golang中的tlsconfiguration中将InsecureSkipVerify标志设置为true来完成的) 连接grpc服务器的默认方式(tls中没有启用)是使用grpc.credentials.createInsecure()。 但是当我启用tls模式的服务器,并使用grpc.credentials.createSsl()它给了我下面的错误日志: E1207 20:47:12.228100000 123145571782656 handshake.c:128]安全握手失败:{“created”:“@ 1481123832.228090000”,“description”:“Handshake failed”,“file”:“../ src / core / lib /安全/运输/ handshake.c”, “file_line”:264, “tsi_code”:10 “tsi_error”: “TSI_PROTOCOL_FAILURE”} 如何摆脱这个错误,并连接到tls启用grpc服务器,而无需在nodejs客户端中提供任何证书?

去通道如何与js生成器不同?

Go通道可以用于在goroutine之间进行通信。 类似地,yield和next语法可以用来在两个生成器之间进行通信。 我的想法是对的吗? 如果不是,我错在哪里?

Node.js:通过unix套接字发送GET请求

我是新的node.js。 我试图设置客户端服务器连接使用unix套接字,其中我的客户端请求将在node.js和服务器在后台运行将在去。 客户端代码: var request = require('request'); request('http://unix:/tmp/static0.sock:/volumes/list', function (error, response, body) { if (!error && response.statusCode == 200) { console.log(body) } else { console.log("In else part of the receiver" + response.statusCode + body) } } }) 当我尝试与写入的服务器通信时,它显示HTTP error: 400 Bad Request: malformed Host header' 同样的作品: curl -X GET –unix-socket /tmp/static0.sock http://:/volumes/list 不知道我的请求有什么问题。 我们需要发送标题吗? 我期待JSON响应。

Golang中的nodejs setTimeout是什么?

我目前正在学习,并且我错过了来自golang的Nodejs的setTimeout 。 我还没读过很多,我想知道是否可以像间隔或回送一样执行相同的操作。 有没有一种方法可以将它从节点写入golang? 我听说golang处理并发性很好,这可能是一些goroutines或其他? //Nodejs function main() { //Do something setTimeout(main, 3000) console.log('Server is listening to 1337') } 先谢谢你! //Go version func main() { for t := range time.Tick(3*time.Second) { fmt.Printf("working %s \n", t) } //basically this will not execute.. fmt.Printf("will be called 1st") }