Go语言:编译期间出错

Go语言:编译期间出错,go,compiler-errors,Go,Compiler Errors,我试图编译这个用Go on Windows 10编写的程序,但我遇到以下错误: warpwallet_cracker.go:12:2: cannot find package "github.com/vsergeev/btckeygenie/btckey" in any of: C:\Go\src\github.com\vsergeev\btckeygenie\btckey (from $GOROOT) C:\Users\user\go\src\github.co

我试图编译这个用Go on Windows 10编写的程序,但我遇到以下错误:

warpwallet_cracker.go:12:2: cannot find package "github.com/vsergeev/btckeygenie/btckey" in any of:
        C:\Go\src\github.com\vsergeev\btckeygenie\btckey (from $GOROOT)
        C:\Users\user\go\src\github.com\vsergeev\btckeygenie\btckey (from $GOPATH)
warpwallet_cracker.go:4:5: cannot find package "golang.org/x/crypto/pbkdf2" in any of:
        C:\Go\src\golang.org\x\crypto\pbkdf2 (from $GOROOT)
        C:\Users\user\go\src\golang.org\x\crypto\pbkdf2 (from $GOPATH)
warpwallet_cracker.go:5:2: cannot find package "golang.org/x/crypto/scrypt" in any of:
        C:\Go\src\golang.org\x\crypto\scrypt (from $GOROOT)
        C:\Users\user\go\src\golang.org\x\crypto\scrypt (from $GOPATH)
Github:

代码如下:

package main

import (
    "golang.org/x/crypto/pbkdf2"
    "golang.org/x/crypto/scrypt"
    "bytes"
    "crypto/sha256"
    "fmt"
    "time"
    "os"
    "math/rand"
    "github.com/vsergeev/btckeygenie/btckey"
)

const letterBytes = "0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
func random(r *rand.Rand, n int) string {
    b := make([]byte, n)
    for i := range b {
        b[i] = letterBytes[r.Intn(62)]
    }

    return string(b)
}

func main () {
    r := rand.New(rand.NewSource(time.Now().Unix()))

    var address string
    saltValue := ""

    if len(os.Args) >= 2 {
        address = os.Args[1]
        if len(os.Args) == 3 {
            saltValue = os.Args[2]
        } else {
            saltValue = "";
        }
    } else {
        fmt.Printf("Usage: %s [Address] [Salt - optional]\n\n", os.Args[0])
        os.Exit(0)
    }

    fmt.Printf("Using address \"%s\" and salt \"%s\"\n", address, saltValue)

    tries := 0
    start := time.Now()
    for {
        passphraseValue := random(r, 8)
        result := bruteforce(passphraseValue, saltValue, address);
        if result != "" {
            fmt.Printf("Found! Passphrase %s\n", passphraseValue)
            os.Exit(0)
        } else {
            tries += 1
            fmt.Printf("\rTried %d passphrases in %s [last passphrase: %s]", tries, time.Since(start), passphraseValue)
        }
    }
}

func bruteforce(passphraseValue string, saltValue string, address string) string {
    var priv btckey.PrivateKey
    var err error

    pass := fmt.Sprint(passphraseValue, "\x01")
    salt := fmt.Sprint(saltValue, "\x01")
    key, _ := scrypt.Key([]byte(pass), []byte(salt), 262144, 8, 1, 32)
    pass = fmt.Sprint(passphraseValue, "\x02")
    salt = fmt.Sprint(saltValue, "\x02")
    key2 := pbkdf2.Key([]byte(pass), []byte(salt), 65536, 32, sha256.New)

    var result bytes.Buffer
    for i := 0; i < len(key); i++ {
        result.WriteByte(key[i] ^ key2[i])
    }

    err = priv.FromBytes(result.Bytes())
    if err != nil {
        fmt.Printf("Error importing private key: %s [%s]\n", err, passphraseValue)
        return ""
    }

    address_uncompressed := priv.ToAddressUncompressed()

    if (address_uncompressed == address) {
        return passphraseValue
    }

    return ""
}
主程序包
进口(
“golang.org/x/crypto/pbkdf2”
“golang.org/x/crypto/scrypt”
“字节”
“加密/sha256”
“fmt”
“时间”
“操作系统”
“数学/兰德”
“github.com/vsergeev/btckeygenie/btckey”
)
const letterBytes=“0123456789abcdefghijklmnopqrstuvxyzabcdefghijklmnopqrstuvxyz”
func随机(r*rand.rand,n int)字符串{
b:=make([]字节,n)
对于i:=范围b{
b[i]=letterBytes[r.Intn(62)]
}
返回字符串(b)
}
func main(){
r:=rand.New(rand.NewSource(time.Now().Unix()))
变量地址字符串
saltValue:=“”
如果len(os.Args)>=2{
地址=os.Args[1]
如果len(os.Args)==3{
saltValue=os.Args[2]
}否则{
saltValue=“”;
}
}否则{
fmt.Printf(“用法:%s[地址][盐-可选]\n\n”,os.Args[0])
操作系统退出(0)
}
fmt.Printf(“使用地址\%s\”和salt\%s\”\n,地址,saltValue)
尝试次数:=0
开始:=时间。现在()
为了{
passphraseValue:=随机(r,8)
结果:=bruteforce(passphraseValue、saltValue、address);
如果结果为“”“”{
fmt.Printf(“找到!密码短语%s\n”,密码短语值)
操作系统退出(0)
}否则{
尝试次数+=1
fmt.Printf(“\r在%s[最后一个密码短语:%s]中键入%d个密码短语”,尝试,时间。自(开始),密码短语值)
}
}
}
func bruteforce(passphraseValue字符串、saltValue字符串、地址字符串)字符串{
var priv btckey.PrivateKey
变量错误
通过:=fmt.Sprint(密码短语evalue,“\x01”)
salt:=fmt.Sprint(saltValue,“\x01”)
key,:=scrypt.key([]字节(pass),[]字节(salt),262144,8,1,32)
pass=fmt.Sprint(密码短语evalue,“\x02”)
salt=fmt.Sprint(saltValue,“\x02”)
key2:=pbkdf2.Key([]字节(通过),[]字节(salt),65536,32,sha256.New)
var结果字节。缓冲区
对于i:=0;i

我不知道会出现什么问题,有人能帮我吗?

您需要使用“go get”命令安装依赖项

您没有安装依赖项,如错误消息中所述。 仔细查看错误消息,您会发现三个不同的错误。非go标准库的每个包一个

当您尝试导入不属于go标准库的包时,go编译器将在$GOROOT路径和$GOPATH路径下查找,以尝试查找与您尝试导入的名称匹配的包。如果没有找到,编译器将抛出上面看到的错误。正如@Adrian所说,您可以运行:

去拿。/…


自动下载所有依赖项。

直接在此处发布所有相关代码。不要链接到代码。运行
go-get./…
获取所有依赖项。