将2个加解密方法移至crypto_util

This commit is contained in:
zhl 2023-05-09 18:55:38 +08:00
parent 851a6ecf5b
commit 4e5cfd4462
3 changed files with 43 additions and 42 deletions

View File

@ -11,11 +11,11 @@ use std::str::FromStr;
mod wallet; mod wallet;
use secp256k1::PublicKey; use secp256k1::PublicKey;
use wallet::wallet_impl::{zdecrypt, zencrypt};
use wallet_impl::Wallet; use wallet_impl::Wallet;
use crate::wallet::*; use crate::wallet::*;
mod utils; mod utils;
use utils::crypto_utils::{zdecrypt, zencrypt};
use utils::str_utils::{base64_to_hex, hex_to_base64}; use utils::str_utils::{base64_to_hex, hex_to_base64};
// #[cfg(target_os = "android")] // #[cfg(target_os = "android")]

View File

@ -1,14 +1,16 @@
use aes_gcm::{ use aes_gcm::{
aead::{generic_array::GenericArray, Aead, KeyInit}, aead::{generic_array::GenericArray, Aead, KeyInit},
Aes256Gcm, Aes256Gcm,
Nonce, // Or `Aes128Gcm`
}; };
use anyhow::Result;
use argon2::{ use argon2::{
password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString}, password_hash::{rand_core::OsRng, PasswordHash, PasswordHasher, PasswordVerifier, SaltString},
Argon2, Argon2,
}; };
use base64::{engine::general_purpose, Engine as _}; use base64::{engine::general_purpose, Engine as _};
use ecies::{decrypt, encrypt};
use rand::prelude::*; use rand::prelude::*;
use secp256k1::{PublicKey, SecretKey};
use std::str; use std::str;
use tiny_keccak::keccak256; use tiny_keccak::keccak256;
@ -119,3 +121,42 @@ pub fn aes_decrypt(str: &str, key: &str) -> String {
let plaintext = str::from_utf8(&plaintext).expect("err convert to utf8"); let plaintext = str::from_utf8(&plaintext).expect("err convert to utf8");
plaintext.to_string() plaintext.to_string()
} }
pub fn zencrypt(pk: PublicKey, msg: &str) -> Result<String> {
let pk = &pk.serialize();
let msg = msg.as_bytes();
// println!("msg before encrypt: {:?}", msg);
let msg_encrypt = match encrypt(pk, &msg) {
Ok(v) => v,
Err(e) => panic!("error encrypt content: {}", e),
};
// println!("msg after encrypt: {:?}", &msg_encrypt);
let str_encrypt = hex::encode(&msg_encrypt);
Ok(str_encrypt)
}
pub fn zdecrypt(sk: SecretKey, msg1: &str) -> Result<String> {
let sk = sk.secret_bytes();
let mut msg: String = msg1.clone().to_string();
if msg.len() % 2 == 1 {
msg = "0".to_owned() + &msg;
}
println!("msg to decrypt: {:?}", &msg);
let msg = match hex::decode(&msg) {
Ok(v) => v,
Err(e) => panic!("error decode hex str: {}", e),
};
let msg_decrypt = match decrypt(&sk, &msg) {
Ok(v) => v,
Err(e) => panic!("error decrypt content: {}", e),
};
// println!("msg after decrypt: {:?}", &msg_decrypt);
// let msg_decrypt = hex::encode(msg_decrypt);
let str_decrypt = match str::from_utf8(&msg_decrypt) {
Ok(v) => v,
Err(e) => panic!("Invalid UTF-8 sequence: {}", e),
};
let result = str_decrypt.to_string();
Ok(result)
}

View File

@ -2,7 +2,6 @@ extern crate hex;
use anyhow::Result; use anyhow::Result;
use core::fmt::Write; use core::fmt::Write;
use ecies::{decrypt, encrypt};
use primitive_types::{H160, H256}; use primitive_types::{H160, H256};
use secp256k1::rand::rngs::OsRng; use secp256k1::rand::rngs::OsRng;
use secp256k1::{Message, PublicKey, Secp256k1, SecretKey}; use secp256k1::{Message, PublicKey, Secp256k1, SecretKey};
@ -19,45 +18,6 @@ pub fn generate_keypair() -> (SecretKey, PublicKey) {
secp.generate_keypair(&mut OsRng) secp.generate_keypair(&mut OsRng)
} }
pub fn zencrypt(pk: PublicKey, msg: &str) -> Result<String> {
let pk = &pk.serialize();
let msg = msg.as_bytes();
// println!("msg before encrypt: {:?}", msg);
let msg_encrypt = match encrypt(pk, &msg) {
Ok(v) => v,
Err(e) => panic!("error encrypt content: {}", e),
};
// println!("msg after encrypt: {:?}", &msg_encrypt);
let str_encrypt = hex::encode(&msg_encrypt);
Ok(str_encrypt)
}
pub fn zdecrypt(sk: SecretKey, msg1: &str) -> Result<String> {
let sk = sk.secret_bytes();
let mut msg: String = msg1.clone().to_string();
if msg.len() % 2 == 1 {
msg = "0".to_owned() + &msg;
}
println!("msg to decrypt: {:?}", &msg);
let msg = match hex::decode(&msg) {
Ok(v) => v,
Err(e) => panic!("error decode hex str: {}", e),
};
let msg_decrypt = match decrypt(&sk, &msg) {
Ok(v) => v,
Err(e) => panic!("error decrypt content: {}", e),
};
// println!("msg after decrypt: {:?}", &msg_decrypt);
// let msg_decrypt = hex::encode(msg_decrypt);
let str_decrypt = match str::from_utf8(&msg_decrypt) {
Ok(v) => v,
Err(e) => panic!("Invalid UTF-8 sequence: {}", e),
};
let result = str_decrypt.to_string();
Ok(result)
}
pub fn public_key_address(public_key: &PublicKey) -> H160 { pub fn public_key_address(public_key: &PublicKey) -> H160 {
let public_key = public_key.serialize_uncompressed(); let public_key = public_key.serialize_uncompressed();
debug_assert_eq!(public_key[0], 0x04); debug_assert_eq!(public_key[0], 0x04);