nanoFramework.System.Security.Cryptography 1.0.14
前缀已预留
dotnet add package nanoFramework.System.Security.Cryptography --version 1.0.14
NuGet\Install-Package nanoFramework.System.Security.Cryptography -Version 1.0.14
此命令旨在在 Visual Studio 的包管理器控制台中使用,因为它使用了 NuGet 模块版的 Install-Package.
<PackageReference Include="nanoFramework.System.Security.Cryptography" Version="1.0.14" />
对于支持 PackageReference 的项目,将此 XML 节点复制到项目文件中以引用包。
paket add nanoFramework.System.Security.Cryptography --version 1.0.14
NuGet 团队不为此客户端提供支持。请联系其 维护者 以寻求支持。
#r "nuget: nanoFramework.System.Security.Cryptography, 1.0.14"
#r 指令可以在 F# Interactive 和 Polyglot Notebooks 中使用。将此内容复制到交互式工具或脚本的源代码中,以引用该包。
// Install nanoFramework.System.Security.Cryptography as a Cake Addin #addin nuget:?package=nanoFramework.System.Security.Cryptography&version=1.0.14 // Install nanoFramework.System.Security.Cryptography as a Cake Tool #tool nuget:?package=nanoFramework.System.Security.Cryptography&version=1.0.14
NuGet 团队不为此客户端提供支持。请联系其 维护者 以寻求支持。
欢迎访问 .NET nanoFramework System.Security.Cryptography 库仓库
此仓库包含 nanoFramework System.Security.Cryptography 类库。
构建状态
组件 | 构建状态 | NuGet 包 |
---|---|---|
System.Security.Cryptography |
System.Security.Cryptography 使用
此库将 Mbed TLS 提供的等效实现引入了 .NET nanoFramework C# 应用程序。目标代码部署的固件图像必须启用此命名空间。
HMAC SHA256
此类通过使用 SHA256 哈希函数计算基于哈希的消息认证码 (HMAC)。
在 IoT 环境中,此类的典型用法是计算连接到 Azure IoT Hub 的 哈希签名。例如
如果具有 _S_hared _A_ccess _K_ey 并希望编码特定 Uri,则执行此操作的代码片段如下
var hmacsha256 = new HMACSHA256(Convert.FromBase64String(sharedAccessKey));
byte[] hash = hmacsha256.ComputeHash(Encoding.UTF8.GetBytes(encodedUri + "\n" + expiry));
string sig = Convert.ToBase64String(hash);
AES
高级加密标准 (AES)
AES 是Rijndael分组密码的一个变体,具有不同的密钥和块大小。对于AES,NIST从Rijndael家族中选择了三个成员,每个块大小为128位,但密钥长度分别为128、192和256位。
当前版本支持ECB和CBC模式。以下示例演示了如何使用AES类加密和解密样本数据。
请注意,输入数据必须是16位的倍数,否则将抛出异常。短于这个长度应该用零填充。
ECB-AES128
//Sample Usage
string clearText = "Nanoframework";
byte[] clearTextByteArray = Encoding.UTF8.GetBytes(clearText);
// please note the array size: 16 bytes
byte[] clearTextByteArrayWithPadding = new byte[16];
Array.Copy(clearTextByteArray, 0, clearTextByteArrayWithPadding, 0, clearTextByteArray.Length);
// Create a new instance of the Aes
AES aes = new AES(CipherMode.ECB);
aes.Key = new byte[16] { 198, 49, 248, 31, 20, 7, 226, 232, 208, 100, 15, 11, 2, 32, 213, 243 };
// Encrypt the bytes to a string.
var encryptedData = aes.Encrypt(clearTextByteArrayWithPadding);
string encryptedText = Encoding.UTF8.GetString(encryptedData);
Debug.WriteLine(encryptedText);
// Decrypt the bytes to a string.
var decryptedByteArray = aes.Decrypt(encryptedData);
string decryptedText = Encoding.UTF8.GetString(decryptedByteArray);
Debug.WriteLine(decryptedText);
CBC-AES128
//Sample Usage
byte[] inputBlockCbc1 = new byte[] { 0x6b, 0xc1, 0xbe, 0xe2, 0x2e, 0x40, 0x9f, 0x96, 0xe9, 0x3d, 0x7e, 0x11, 0x73, 0x93, 0x17, 0x2a };
// Create a new instance of the Aes class for CBC
Aes aes = new(CipherMode.CBC);
aes.Key = new byte[] { 198, 49, 248, 31, 20, 7, 226, 232, 208, 100, 15, 11, 2, 32, 213, 243 };;
aes.IV = new byte[] { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f };
// Encrypt the bytes
var encryptedData = aes.Encrypt(inputBlockCbc1);
string encryptedText = Encoding.UTF8.GetString(encryptedData);
Debug.WriteLine(encryptedText);
// Decrypt the bytes to a string.
var decryptedByteArray = aes.Decrypt(encryptedData);
string decryptedText = Encoding.UTF8.GetString(decryptedByteArray);
Debug.WriteLine(decryptedText);
反馈和文档
有关反馈、问题和如何贡献的说明,请参阅主仓库。
加入我们的Discord社区这里。
致谢
此项目的贡献者列表可在CONTRIBUTORS中找到。
许可证
nanoFramework 类库遵循MIT许可证。
行为准则
此项目已采用贡献者契约定义的行为准则,以阐明我们社区中预期的行为。有关更多信息,请参阅.NET基金会行为准则。
.NET基金会
此项目由.NET基金会支持。
-
- nanoFramework.CoreLibrary (>= 1.15.5)
NuGet包
此包未被任何NuGet包使用。
GitHub仓库
此包未被任何流行的GitHub仓库使用。