作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
谁能提供 SecurityDriven.Inferno AesCtrCryptoTransfom 的使用示例类(class) ?
该库似乎很有前途,但我无法找到任何使用它的代码,并且提供的详细信息对我来说还不够加密虚拟......
我正在扩展一个与许多密码完美配合的应用程序,只是它不支持 AES 计数器模式。对于一些 SSHv2 session ,我需要这个 aes-128-ctr 密码。
该应用程序为所有不同的密码提供了一个非常简单的密码接口(interface),如下所示:
internal interface Cipher
{
void Encrypt(byte[] data, int offset, int len, byte[] result, int result_offset);
void Decrypt(byte[] data, int offset, int len, byte[] result, int result_offset);
int BlockSize { get; }
}
public class AES128CTR : Cipher
{
private System.Security.Cryptography.ICryptoTransform Encryptor;
private ArraySegment<Byte> _counter;
public AES128CTR(byte[] key, byte[] iv)
{
_counter = new ArraySegment<byte>(iv);
Encryptor = new SecurityDriven.Inferno.Cipher.AesCtrCryptoTransform(key, _counter);
}
public int BlockSize { get { return Encryptor.InputBlockSize; } }
public void Decrypt(byte[] data, int offset, int len, byte[] result, int result_offset)
{
Encryptor.TransformBlock(data, 0, len, result, 0);
}
public void Encrypt(byte[] data, int offset, int len, byte[] result, int result_offset)
{
Encryptor.TransformBlock(data, 0, len, result, 0);
}
}
最佳答案
这是工作解决方案:
public class AES128CTR : Cipher
{
private byte[] _key;
private byte[] _iv;
public AES128CTR(byte[] key, byte[] iv, int KeySize = 128)
{
this._key = key;
this._iv = iv;
}
public int BlockSize { get { return _iv.Length; } }
public void Decrypt(byte[] data, int offset, int len, byte[] result, int result_offset)
{
SecurityDriven.Inferno.Cipher.AesCtrCryptoTransform transformation = new SecurityDriven.Inferno.Cipher.AesCtrCryptoTransform(_key, new ArraySegment<byte>(_iv));
using (MemoryStream ms = new MemoryStream())
{
using (System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream(ms, transformation, System.Security.Cryptography.CryptoStreamMode.Write))
{
cs.Write(data, offset, len);
}
var r = ms.ToArray();
Array.Copy(r, result, r.Length);
}
}
public void Encrypt(byte[] data, int offset, int len, byte[] result, int result_offset)
{
SecurityDriven.Inferno.Cipher.AesCtrCryptoTransform transformation = new SecurityDriven.Inferno.Cipher.AesCtrCryptoTransform(_key, new ArraySegment<byte>(_iv));
using (MemoryStream ms = new MemoryStream())
{
using (System.Security.Cryptography.CryptoStream cs = new System.Security.Cryptography.CryptoStream(ms, transformation, System.Security.Cryptography.CryptoStreamMode.Write))
{
cs.Write(data, offset, len);
}
var r = ms.ToArray();
Array.Copy(r, result, r.Length);
}
}
}
关于ssh - hell AesCtrCryptoTransform,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46202685/
谁能提供 SecurityDriven.Inferno AesCtrCryptoTransfom 的使用示例类(class) ? 该库似乎很有前途,但我无法找到任何使用它的代码,并且提供的详细信息对我
我是一名优秀的程序员,十分优秀!