本文整理汇总了Golang中crypto/rsa.DecryptOAEP函数的典型用法代码示例。如果您正苦于以下问题:Golang DecryptOAEP函数的具体用法?Golang DecryptOAEP怎么用?Golang DecryptOAEP使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了DecryptOAEP函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Golang代码示例。
示例1: authorize
// Function check if private key could decode what public key encode
func authorize(pubkey *rsa.PublicKey, privkey_str []byte) (bool, error) {
block, _ := pem.Decode(privkey_str)
if block == nil {
return false, errors.New("Provided data is not private key")
}
if len(block.Bytes) < 100 {
return false, errors.New("Provided data is not private key")
}
privkey := new(rsa.PrivateKey)
if block.Type == "RSA PRIVATE KEY" {
privkey, _ = x509.ParsePKCS1PrivateKey(block.Bytes)
} else {
return false, errors.New("Provided data is not private key")
}
// Encrypt message
eComm, err := rsa.EncryptOAEP(sha1.New(), rand.Reader, pubkey, []byte(testMessage), nil)
if err != nil {
return false, err
}
log.Println("Encrypted data " + string(eComm[:]))
log.Println(eComm[:])
test := []byte{
75, 171, 179, 168, 150, 13, 169, 80, 26, 131, 139, 152, 174, 42, 69, 237, 56, 148, 43, 29, 48, 179, 116, 109, 226, 86, 102, 236, 225, 150, 192, 52, 96, 6, 203, 147, 106, 50, 228, 117, 89, 220, 214, 2, 156, 53, 86, 236, 73, 167, 186, 30, 27, 140, 67, 181, 65, 176, 95, 115, 189, 99, 72, 219, 88, 158, 242, 101, 78, 244, 137, 80, 150, 26, 20, 163, 190, 26, 165, 45, 82, 228, 140, 100, 116, 210, 63, 247, 103, 14, 131, 22, 172, 128, 171, 121, 13, 218, 2, 217, 119, 51, 243, 39, 22, 49, 165, 4, 204, 248, 251, 129, 190, 153, 27, 170, 56, 83, 108, 87, 56, 187, 88, 9, 119, 35, 247, 125,
}
msg1, err := rsa.DecryptOAEP(sha1.New(), rand.Reader, privkey, test, nil)
log.Println(string(msg1))
// Decrypt message
msg, err := rsa.DecryptOAEP(sha1.New(), rand.Reader, privkey, eComm, nil)
if err != nil {
return false, err
}
// If Decrypted message euqal with original - private key is correct and user authorized
if string(msg) == testMessage {
return true, nil
}
return false, nil
}
示例2: Decrypt
// Decrypts a symmetric key encrypted to this Identity
func (this *SecretIdentity) Decrypt(ek *EncryptedKey) (key *SymmetricKey) {
out, err := rsa.DecryptOAEP(sha256.New224(), rand.Reader, this.key, ek.impl, nil)
if err != nil {
panic(err)
}
return &SymmetricKey{key: out}
}
示例3: ReadWebSocket
func ReadWebSocket(ws *websocket.Conn) []byte {
total_bytes_bytes_encrypted := make([]byte, key_len/8)
if _, err := ws.Read(total_bytes_bytes_encrypted); err != nil {
log.Println("(ReadWebSocket) Read Total Bytes: ", err)
}
sha1hash := sha1.New()
total_bytes_bytes, err := rsa.DecryptOAEP(sha1hash, rand.Reader, pvkey, total_bytes_bytes_encrypted, nil)
if err != nil {
log.Println("(ReadWebSocket) Decryption: ", err)
}
var total_bytes uint32
total_bytes = binary.LittleEndian.Uint32(total_bytes_bytes)
// fmt.Printf("OAEP decrypted [%x] to \n[%d]\n",total_bytes_bytes_encrypted, total_bytes)
var msg_splice [][]byte
msg := make([]byte, total_bytes/2-64)
if _, err := ws.Read(msg); err != nil {
log.Println("(ReadTCPSocket) Read Msg: ", err)
}
msg2 := make([]byte, total_bytes-total_bytes/2+64)
if _, err := ws.Read(msg2); err != nil {
log.Println("(ReadTCPSocket) Read Msg2: ", err)
}
msg_splice = append(msg_splice, msg)
msg_splice = append(msg_splice, msg2)
return bytes.Join(msg_splice, nil)
}
示例4: Decrypt
func (rk *rsaKey) Decrypt(msg []byte) ([]byte, error) {
s, err := rsa.DecryptOAEP(sha1.New(), rand.Reader, &rk.key, msg[kzHeaderLength:], nil)
if err != nil {
return nil, err
}
return s, nil
}
示例5: CredulousDecodeAES
func CredulousDecodeAES(ciphertext string, privkey *rsa.PrivateKey) (plaintext string, err error) {
in, err := base64.StdEncoding.DecodeString(ciphertext)
if err != nil {
return "", err
}
// pull apart the layers of base64-encoded JSON
var encrypted AESEncryption
err = json.Unmarshal(in, &encrypted)
if err != nil {
return "", err
}
encryptedKey, err := base64.StdEncoding.DecodeString(encrypted.EncodedKey)
if err != nil {
return "", err
}
// decrypt the AES key using the ssh private key
aesKey, err := rsa.DecryptOAEP(sha1.New(), rand.Reader, privkey, encryptedKey, []byte("Credulous"))
if err != nil {
return "", err
}
plaintext, err = decodeAES(aesKey, encrypted.Ciphertext)
return plaintext, nil
}
示例6: decryptRSA
func decryptRSA(in, out string, key *rsa.PrivateKey, verifykey string, armour bool) (err error) {
pkg, err := ioutil.ReadFile(in)
if err != nil {
fmt.Println("[!]", err.Error())
return
}
lockedKey, box, err := unpackageBox(pkg)
if err != nil {
return
}
hash := sha256.New()
boxKey, err := rsa.DecryptOAEP(hash, rand.Reader, key, lockedKey, nil)
if err != nil {
fmt.Println("[!] RSA decryption failed:", err.Error())
return
}
message, ok := secretbox.Open(box, boxKey)
if !ok {
fmt.Println("[!] failed to open box.")
err = fmt.Errorf("opening box failed")
return
}
err = ioutil.WriteFile(out, message, 0644)
return
}
示例7: DecryptOAEP
func (enc *CryptorOAEP) DecryptOAEP(ciphertextBytes []byte, label []byte) ([]byte, error) {
if enc.RsaPrivateKey == nil {
err := errors.New("401: RSA Private Key Not Set")
return []byte{}, err
}
return rsa.DecryptOAEP(enc.Hash, rand.Reader, enc.RsaPrivateKey, ciphertextBytes, label)
}
示例8: main
func main() {
privateKey, err := rsa.GenerateKey(rand.Reader, 512)
if err != nil {
fmt.Printf("rsa.GenerateKey: %v\n", err)
}
message := "Hello World!"
messageBytes := bytes.NewBufferString(message)
sha1 := sha1.New()
encrypted, err := rsa.EncryptOAEP(sha1, rand.Reader, &privateKey.PublicKey, messageBytes.Bytes(), nil)
if err != nil {
fmt.Printf("EncryptOAEP: %s\n", err)
}
decrypted, err := rsa.DecryptOAEP(sha1, rand.Reader, privateKey, encrypted, nil)
if err != nil {
fmt.Printf("decrypt: %s\n", err)
}
decryptedString := bytes.NewBuffer(decrypted).String()
fmt.Printf("message: %v\n", message)
fmt.Printf("encrypted: %v\n", encrypted)
fmt.Printf("decryptedString: %v\n", decryptedString)
}
示例9: decodePassword
func decodePassword(privatekeyfile string, in string) string {
pemData, err := ioutil.ReadFile(privatekeyfile)
block, _ := pem.Decode(pemData)
if block == nil {
fmt.Errorf("bad key data: %s", "not PEM-encoded")
}
if got, want := block.Type, "RSA PRIVATE KEY"; got != want {
fmt.Errorf("unknown key type %q, want %q", got, want)
}
priv, err := x509.ParsePKCS1PrivateKey(block.Bytes)
if err != nil {
fmt.Errorf("bad private key: %s", err)
}
//encrypt
//out, err := rsa.EncryptOAEP(sha1.New(), rand.Reader, &priv.PublicKey, []byte(in), []byte("aaa"))
//if err != nil {
// fmt.Errorf("encrypt: %s", err)
//}
//encodedStr := base64.StdEncoding.EncodeToString(out)
//fmt.Printf("encoded: %s \n", encodedStr)
// Decrypt the data
encodedBytes, _ := base64.StdEncoding.DecodeString(in)
out, err := rsa.DecryptOAEP(sha1.New(), rand.Reader, priv, encodedBytes, []byte("aaa"))
if err != nil {
fmt.Errorf("decrypt: %s", err)
}
outStr := base64.StdEncoding.EncodeToString(out)
fmt.Printf("decoded result %s\n", outStr)
return outStr
}
示例10: TestPad
func TestPad(t *testing.T) {
private, err := rsa.GenerateKey(rand.Reader, 2048)
if err != nil || private == nil {
t.Fatal("Can't gen private key %s\n", err)
}
public := &private.PublicKey
var a [9]byte
copy(a[0:8], "IDENTITY")
seed := []byte{1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16}
encrypted_secret, err := rsa.EncryptOAEP(sha1.New(), rand.Reader,
public, seed, a[0:9])
if err != nil {
t.Fatal("Can't encrypt ", err)
}
fmt.Printf("encrypted_secret: %x\n", encrypted_secret)
decrypted_secret, err := rsa.DecryptOAEP(sha1.New(), rand.Reader,
private, encrypted_secret, a[0:9])
if err != nil {
t.Fatal("Can't decrypt ", err)
}
fmt.Printf("decrypted_secret: %x\n", decrypted_secret)
var N *big.Int
var D *big.Int
var x *big.Int
var z *big.Int
N = public.N
D = private.D
x = new(big.Int)
z = new(big.Int)
x.SetBytes(encrypted_secret)
z = z.Exp(x, D, N)
decrypted_pad := z.Bytes()
fmt.Printf("decrypted_pad : %x\n", decrypted_pad)
}
示例11: Decrypt
func (t *rsaTransformer) Decrypt(value []byte) ([]byte, error) {
decodedValueObj, err := DecodeString(string(value))
if err != nil {
return nil, err
}
return rsa.DecryptOAEP(sha512.New(), rand.Reader, t.rsaPrivateKey, []byte(decodedValueObj), nil)
}
示例12: Unwrap
func (alg *RsaOaep) Unwrap(encryptedCek []byte, key interface{}, cekSizeBits int, header map[string]interface{}) (cek []byte, err error) {
if privKey, ok := key.(*rsa.PrivateKey); ok {
return rsa.DecryptOAEP(alg.sha(), rand.Reader, privKey, encryptedCek, nil)
}
return nil, errors.New("RsaOaep.Unwrap(): expected key to be '*rsa.PrivateKey'")
}
示例13: Decrypt
func Decrypt() {
key := Key()
h, ha := HashAlgorithm()
encrypted, err := ioutil.ReadFile(EncryptedFile)
if err != nil {
log.Fatalf("failed reading encrypted data: %s", err)
}
signature, err := ioutil.ReadFile(SignatureFile)
if err != nil {
log.Fatalf("failed saving signature data: %s", err)
}
if err = rsa.VerifyPKCS1v15(&key.PublicKey, ha, HashMessage(encrypted), signature); err != nil {
log.Fatalf("message not valid: %s", err)
} else {
log.Printf("message is valid!")
}
plaintext, err := rsa.DecryptOAEP(h, rand.Reader, key, encrypted, nil)
if err != nil {
log.Fatalf("failed decrypting: %s", err)
}
log.Printf("decrypted message: %s", plaintext)
}
示例14: ServerDecryptHello
// Decrypt the Hello using the node's private comms key, and decode its
// contents.
func ServerDecryptHello(ciphertext []byte, ckPriv *rsa.PrivateKey, rng *xr.PRNG) (
sOneShot *AesSession, version1s uint32, err error) {
if rng == nil {
rng = xr.MakeSystemRNG()
}
sha := sha1.New()
data, err := rsa.DecryptOAEP(sha, nil, ckPriv, ciphertext, nil)
// DEBUG
if err == nil {
expectedLen := 2*aes.BlockSize + 12
if len(data) != expectedLen {
fmt.Printf("expected OAEP packet len %d, actual %d bytes\n",
expectedLen, len(data))
err = WrongOAEPSize // XXX BAD NAME
}
}
// END
if err == nil {
key1s := data[:2*aes.BlockSize]
// salt1s = data[2*aes.BlockSize : 2*aes.BlockSize+8]
vBytes := data[2*aes.BlockSize+8:]
version1s = uint32(vBytes[0]) |
uint32(vBytes[1])<<8 |
uint32(vBytes[2])<<16 |
uint32(vBytes[3])<<24
sOneShot, err = NewAesSession(key1s, rng)
}
return
}
示例15: aeskeyFromRsa
// Takes the rsaaeskey message (in the ANNOUNCE body) and decrypts it to an
// aes key.
func aeskeyFromRsa(rsaaeskey64 string) (key []byte, err error) {
s64 := base64pad(rsaaeskey64)
s, err := base64.StdEncoding.DecodeString(s64)
if err != nil {
return
}
return rsa.DecryptOAEP(sha1.New(), nil, rsaPrivKey, s, nil)
}