对密码学知之甚少我对看似简单的任务有很大的疑问.
我有.pem证书,数据字节和该数据的签名.我想通过匹配签名来检查是否有人更改了数据.
我的尝试:
private bool VerifySignature(byte[] data, byte[] signature)
{
try
{
X509Certificate certificate = new X509Certificate("cert_filename.pem");
if (certificate == null)
return false;
DSACryptoServiceProvider dsa = (DSACryptoServiceProvider)certificate.PublicKey.Key;
return dsa.VerifyData(data, signatureData);
}
catch
{
return false;
}
}
Run Code Online (Sandbox Code Playgroud)
但它给了我一个错误
'不支持证书密钥算法'(System.NotSupportedException).
查看加载的证书,它表示签名算法是'sha1ecdsa'.
我只是想验证数据与签名.我在这里错过了什么?我想在没有任何外部解决方案的情况下这样做,因为它似乎是非常简单的任务.
更新:我正在尝试实现与以下Java代码相同的功能:
private boolean verify(byte[] data, byte[] signature)
{
boolean isLicenseCorrect = false;
Signature sig = Signature.getInstance("SHA1WithECDSA");
sig.initVerify(certificate.getPublicKey());
sig.update(data);
return sig.verify(signature);
}
Run Code Online (Sandbox Code Playgroud) 好
我知道这是一个微不足道的问题,但是:如何从两个已知模式/单词之间的文件中删除行:
pattern1
垃圾
模式2
获得:
pattern1
pattern2
有没有人知道用于研究sed的好(简单的书面!)资源?有很多明显的例子吗?
一个简单但烦人的事情:
使用这样的脚本:
while read x; do
echo "$x"
done<file
Run Code Online (Sandbox Code Playgroud)
在包含空格的文件上:
text
Run Code Online (Sandbox Code Playgroud)
会给我一个没有空格的输出:
text
Run Code Online (Sandbox Code Playgroud)
问题是我在文本之前需要这个空间(它主要是一个选项卡,但并非总是如此).
所以问题是:如何在这样的脚本中获得与输入文件中相同的行?
更新:好的,所以我改变while read x了while IFS= read x.
echo "$x"在没有剥离第一个选项卡的情况下给出正确答案,但是,eval "echo $x"剥离此选项卡.
那我该怎么办?
我有这样的文件:
text2insert
filewithpattern
并且还知道:
图案
我怎样才能插入来自行text2insert成filewithpattern,但之后的pattern线?
使用bash 2.05b
更新:之前filewithpattern应该看起来像:
垃圾
pattern1
pattern2
垃圾
之后:
垃圾
pattern1
text2insert lines
text2insert lines
text2insert lines
pattern2
garbage
我正在寻找关于制作动态对话框的好解释 - 在bash中使用菜单框.我正在尝试从具有以下结构的文件中加载用户列表:
------ user ------
/rw412 0.2 /rx511 23.1 /sgo23 9.2
/fs352 1.4 /...
------ another_user ------
/rw412 0.3 / and so on...
Run Code Online (Sandbox Code Playgroud)
当然用户名之间------
我真的不知道如何在对话框中使用循环.我也试图避免创建其他文件.
请帮忙