国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Rust常用加密算法

這篇具有很好參考價值的文章主要介紹了Rust常用加密算法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

哈希運算(以Sha256為例)


main.rs:

use?crypto::digest::Digest;
use?crypto::sha2::Sha256;

fn?main()?{
????let?input?=?"dashen";
????let?mut?sha?=?Sha256::new();

????sha.input_str(input);

????println!("{}",?sha.result_str());
}

Cargo.toml:

[package]
name?=?"crypto_test"
version?=?"0.1.0"
edition?=?"2021"

#?See?more?keys?and?their?definitions?at?https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]
rustc-serialize?=?"0.3.24"
rust-crypto?=?"0.2.36"
rand?=?"0.8.5"

輸出為:

6d65924d8e0580b9ac04d13da91c74c3ae28b08b4be4634ae06e647f42a88913

可以在線比對驗證一下

Rust常用加密算法,后端



驗證數(shù)據(jù)完整性(使用HMAC)


MAC(Message Authentication Code,消息認證碼算法)是含有密鑰散列函數(shù)算法,兼容了MD和SHA算法的特性,并在此基礎(chǔ)上加上了密鑰。因此MAC算法也經(jīng)常被稱作HMAC算法。 HMAC算法首先它是基于信息摘要算法的。目前主要集合了MD和SHA兩大系列消息摘要算法。其中MD系列的算法有HmacMD2、HmacMD4、HmacMD5三種算法;SHA系列的算法有HmacSHA1、HmacSHA224、HmacSHA256、HmacSHA384、HmacSHA512五種算法。

HMAC算法除了需要信息摘要算法外,還需要一個密鑰。HMAC的密鑰可以是任何長度,如果密鑰的長度超過了摘要算法信息分組的長度,則首先使用摘要算法計算密鑰的摘要作為新的密鑰。一般不建議使用太短的密鑰,因為密鑰的長度與安全強度是相關(guān)的。通常選取密鑰長度不小于所選用摘要算法輸出的信息摘要的長度。


use?std::iter::repeat;

use?crypto::hmac::Hmac;
use?crypto::mac::Mac;
use?crypto::sha2::Sha256;
use?rand::{RngCore,?rngs::OsRng};
use?rustc_serialize::base64::{STANDARD,?ToBase64};
use?rustc_serialize::hex::ToHex;

use?crypto::aes::{self,KeySize};

fn?main()?{
????let?mut?key:?Vec<u8>?=?repeat(0u8).take(32).collect();
????println!("key1:?{:?}",?key);
????OsRng.fill_bytes(&mut?key);

????println!("key2:?{:?}",?key);
????println!("key:?{}",?key.to_base64(STANDARD));


????let?message?=?"dashen.tech";
????let?mut?hmac?=?Hmac::new(Sha256::new(),?&key);
????hmac.input(message.as_bytes());
????println!("HMAC?digest:?{}",?hmac.result().code().to_hex());
}

輸出:

key1:?[0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0]
key2:?[222,?156,?238,?1,?219,?222,?104,?217,?162,?90,?44,?240,?252,?125,?103,?47,?217,?104,?37,?81,?138,?15,?191,?43,?204,?182,?103,?51,?123,?148,?92,?255]
key:?3pzuAdveaNmiWizw/H1nL9loJVGKD78rzLZnM3uUXP8=
HMAC?digest:?33f440b743d37078d428796c028f47237400f91bb638cc843508224f224f4407

可以在線比對[1]驗證一下:

Rust常用加密算法,后端

發(fā)現(xiàn)不一致...

用Go實現(xiàn)一下:

package?main

import?(
?"crypto/hmac"
?"crypto/sha256"
?"encoding/hex"
?"fmt"
)

func?main()?{

?rs?:=?hmacSha256("dashen.tech",?"3pzuAdveaNmiWizw/H1nL9loJVGKD78rzLZnM3uUXP8=")

?fmt.Println("結(jié)果為:",?rs)
}

func?hmacSha256(data?string,?secret?string)?string?{
?h?:=?hmac.New(sha256.New,?[]byte(secret))
?h.Write([]byte(data))
?return?hex.EncodeToString(h.Sum(nil))
}

結(jié)果為: 019cb6bd005949a61eca8bd8900b03bb481803348a497340b65bfe9c3e4816e5


和在線工具計算出的結(jié)果一致,說明rust版的實現(xiàn)有問題...以后再研究下原因




加密內(nèi)容(以AES為例)


高級加密標準(英語:Advanced Encryption Standard,縮寫:AES),在密碼學中又稱Rijndael加密法,是美國聯(lián)邦政府采用的一種區(qū)塊加密標準。這個標準用來替代原先的DES,已經(jīng)被多方分析且廣為全世界所使用。經(jīng)過五年的甄選流程,高級加密標準由美國國家標準與技術(shù)研究院(NIST)于2001年11月26日發(fā)布于FIPS PUB 197,并在2002年5月26日成為有效的標準。2006年,高級加密標準已然成為對稱密鑰加密中最流行的算法之一。

AES加密原理: 采用對稱分組密碼體制,密鑰的長度最少支持為128、192、256位;加密分組長度128位,如果數(shù)據(jù)塊及密鑰長度不足時,會補齊進行加密。

aes加密中的iv是什么[2]

關(guān)于AES加解密中CBC模式的IV初始化向量的安全性問題[3]

use?std::iter::repeat;

use?rand::{RngCore,?rngs::OsRng};
use?rustc_serialize::base64::{STANDARD,?ToBase64};

use?crypto::aes::{self,?KeySize};
use?crypto::symmetriccipher::SynchronousStreamCipher;

fn?main()?{
????let?mut?key:?Vec<u8>?=?repeat(0u8).take(16).collect();
????println!("key1:?{:?}",?key);
????OsRng.fill_bytes(&mut?key);
????println!("key2:?{:?}",?key);
????println!("key:?{}",?key.to_base64(STANDARD));

????let?mut?iv:?Vec<u8>?=?repeat(0u8).take(16).collect();
????println!("iv1:{:?}",?iv);
????OsRng.fill_bytes(&mut?iv);
????println!("iv2:{:?}",?iv);
????println!("iv:?{}",?iv.to_base64(STANDARD));


????let?mut?cipher?=?aes::ctr(KeySize::KeySize128,?&key,?&iv);
????let?secret?=?"dashen.tech";
????let?mut?output:?Vec<u8>?=?repeat(0u8).take(secret.len()).collect();
????cipher.process(secret.as_bytes(),?&mut?output[..]);
????println!("最終結(jié)果為:{}",?output.to_base64(STANDARD));
}

輸出:

key1:?[0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0]
key2:?[199,?203,?0,?244,?50,?50,?159,?132,?73,?176,?74,?56,?85,?31,?15,?218]
key:?x8sA9DIyn4RJsEo4VR8P2g==
iv1:[0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0,?0]
iv2:[74,?79,?85,?77,?17,?214,?64,?71,?35,?240,?34,?105,?42,?80,?40,?226]
iv:?Sk9VTRHWQEcj8CJpKlAo4g==
最終結(jié)果為:b4NBF3CKKLfYuLg=

參考資料

[1]

在線比對: http://www.metools.info/code/c25.html

[2]

aes加密中的iv是什么: https://blog.csdn.net/weixin_39559119/article/details/111180758

[3]

關(guān)于AES加解密中CBC模式的IV初始化向量的安全性問題: https://www.jianshu.com/p/45848dd484a9

本文由 mdnice 多平臺發(fā)布文章來源地址http://www.zghlxwxcb.cn/news/detail-672046.html

到了這里,關(guān)于Rust常用加密算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • C/C++ 常用加密與解密算法

    C/C++ 常用加密與解密算法

    計算機安全和數(shù)據(jù)隱私是現(xiàn)代應(yīng)用程序設(shè)計中至關(guān)重要的方面。為了確保數(shù)據(jù)的機密性和完整性,常常需要使用加密和解密算法。C++是一種廣泛使用的編程語言,提供了許多加密和解密算法的實現(xiàn)。本文將介紹一些在C++中常用的加密與解密算法,這其中包括Xor異或、BASE64、

    2024年02月05日
    瀏覽(24)
  • C#常用的加密算法之一 MD5

    MD5加密概述,原理及實現(xiàn) C#常用的加密算法:MD5、Base64、SHA1、SHA256、HmacSHA256、DES、AES、RSA MD5消息摘要算法,屬Hash算法一類。MD5算法對輸入任意長度的消息進行運行,產(chǎn)生一個128位的消息摘要(32位的數(shù)字字母混合碼)。 不可逆,相同數(shù)據(jù)的MD5值肯定一樣,不同數(shù)據(jù)的MD5值不一

    2024年02月10日
    瀏覽(27)
  • php常用加密算法大全aes、3des、rsa等

    目錄 一、可解密加解密算法 1、aes 加解密算法 2、舊3des加解密方法 ?3、新3des加解密方法 4、rsa公私鑰加解密、簽名驗簽方法 5、自定義加密算法1? 6、自定義加密算法2 7、自定義加密算法3 二、不可解密加密算法? 1、md5算法? 2、crypt算法 3、sha1算法 5、hash 算法 6、 password_ha

    2024年02月09日
    瀏覽(29)
  • .net中加解密用BouncyCastle就夠了,支持常用的各種加密解密算法

    BouncyCastle 是一個流行的 Java 加解密庫,也支持在 .NET 平臺上使用。下面是 BouncyCastle 在 .NET 下使用的一些常見功能,包括 AES、RSA、MD5、SHA1、DES、SHA256、SHA384、SHA512 等。 在開始之前,請確保你已經(jīng)將 BouncyCastle 的 NuGet 包安裝到你的項目中。你可以通過 NuGet 包管理器控制臺或

    2024年02月05日
    瀏覽(25)
  • Python 基于pycryptodome,實現(xiàn)對AES、DES、3DES、RSA等常用加密算法的使用,文末附各種加密的源碼示例

    (中文名:加密圓頂)pycryptodome是一個基于c實現(xiàn)的Python庫,它在2.x中支持2.7以上版本,或3.x中支持3.5以上版本的Python。 可以使用以下命令安裝它: 該庫支持以下特性 認證加密模式 Authenticated encryption modes (GCM, CCM, EAX, SIV, OCB) AES加密在英特爾上的加速 Accelerated AES on Intel platf

    2023年04月09日
    瀏覽(36)
  • java和js實現(xiàn)前端加密后端解密,后端加密前端解密(Base64)

    目錄 1.前端加密后端解密 2.后端加密前端解密 在前端和后端數(shù)據(jù)傳輸時,常常涉及到隱私數(shù)據(jù)的傳輸(例如用戶名和密碼),這時,我們就需要對隱私數(shù)據(jù)進行加密解密 1.前端加密后端解密 ????????1.1 前端jquery實現(xiàn) ????????1.2后端 2.后端加密前端解密 ? ? ? ? 2.1后端加密

    2024年02月16日
    瀏覽(30)
  • 全后端交互數(shù)據(jù)加密

    通信請求使用https 對請求參數(shù)進行簽名,防止數(shù)據(jù)篡改 對請求參數(shù)以及響應(yīng)數(shù)據(jù)進行加解密 app中使用ssl pinning防止抓包操作 [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-78n9M2PH-1677252127361)(安全.assets/https加密流程.jpg)] 加簽和驗簽 :發(fā)送方將請求

    2024年02月03日
    瀏覽(14)
  • 使用非對稱加密(RSA) 實現(xiàn)前端加密后端解密

    使用非對稱加密(RSA) 實現(xiàn)前端加密后端解密

    數(shù)據(jù)加密方式有: 單向加密、對稱加密、非對稱加密、加密鹽、散列函數(shù)、數(shù)字簽名。 1、單向加密 單向加密通過對數(shù)據(jù)進行摘要計算生成密文,密文不可逆推還原。只能加密,不能解密,常用于提取數(shù)據(jù)的指紋信息以此來驗證數(shù)據(jù)的完整性。但是會引發(fā)雪崩效應(yīng)(雪崩效應(yīng)

    2024年02月08日
    瀏覽(95)
  • AES對稱加密實戰(zhàn)——前端js加密后端python解密

    AES對稱加密實戰(zhàn)——前端js加密后端python解密

    高級加密標準(AES, Advanced Encryption Standard),是一種最常見的對稱加密算法 。其加密流程如下圖所示,發(fā)送方通過密鑰對明文加密后進行網(wǎng)絡(luò)傳輸,接收方用同樣的密鑰將密文解密。在前后端通訊場景中,可利用AES算法對用戶密碼進行加密后傳輸,防止被抓包而造成密碼泄露。

    2024年02月04日
    瀏覽(25)
  • 前端請求參數(shù)加密、.NET 后端解密

    前端請求參數(shù)加密、.NET 后端解密

    本文詳細介紹了前端請求參數(shù)加密、.NET 后端解密,文章較長,請各位看官耐心看完。 目錄 一、前端使用“CryptoJS”,前端AES加密,.NET后端AES解密 1.1、加密解密效果圖 1.2、CryptoJS介紹 1.3、準備工作:安裝“CryptoJS” 1.3.1、使用npm進行安裝 1.3.2、Visual Studio中安裝 1.3.2.1、選擇

    2024年02月08日
    瀏覽(28)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包