我试图在Windows上生成数字签名(来自XP SP3,但目前正在使用Windows 7进行测试),其中CryptoAPI将与以下openssl命令兼容:
openssl dgst -sha256 -sign <parameters> (for signing)
openssl dgst -sha256 -verify <parameters> (for validation)
Run Code Online (Sandbox Code Playgroud)
我想使用Windows"MY"密钥库中的私钥进行签名.
我设法使用SHA1摘要算法使用以下CryptoAPI函数签署文件(为简洁省略参数):
CertOpenStore
CertFindCertificateInStore
CryptAcquireCertificatePrivateKey
CryptCreateHash (with CALG_SHA1)
CryptHashData
CryptSignHash
Run Code Online (Sandbox Code Playgroud)
生成的签名与"openssl dgst -sha1 -verify"兼容(一旦字节顺序颠倒).
我的问题是:当我尝试将CALG_SHA_256与CryptCreateHash一起使用时,它会因错误80090008(NTE_BAD_ALGID)而失败.通过谷歌搜索左右,我发现,我需要使用特定的提供者(PROV_RSA_AES),而不是默认的一个.由于我有一个提供者句柄,我还需要用CryptGetUserKey替换CryptAcquireCertificatePrivateKey.所以我修改了我的程序,看起来像:
CryptAcquireContext (with PROV_RSA_AES)
CertOpenStore
CertFindCertificateInStore
CryptGetUserKey
CryptCreateHash (with CALG_SHA256)
CryptHashData
CryptSignHash
Run Code Online (Sandbox Code Playgroud)
不幸的是,这没有按预期工作:CryptGetUserKey失败,错误8009000D(NTE_NO_KEY).如果我删除了CryptGetUserKey调用,程序将一直运行,直到CryptSignHash失败,错误80090016(NTE_BAD_KEYSET).我知道密钥集确实存在并且工作正常,因为我能够使用它来签署SHA1摘要.
我尝试使用从CertFindCertificateInStore获得的证书上下文中的信息再次获取上下文:我能做的最好的是成功的CryptGetUserKey调用,但CryptSignHash总是会失败并出现相同的错误.
我试图使用的私钥是2048位长,但我不认为它是一个问题,因为它与SHA1摘要一起使用.我很茫然,所以任何建议都会非常受欢迎!
coredata比FMDB好吗?我们可以维护核心数据的主键吗?或者任何其他方法来实现而不是在核心数据中使用primarykey?请问任何教程?
我使用tf.exe命令来获取最新的代码,但它一直在询问用户名/密码 - 有没有办法让这些凭据记住?
我查看了tf.exe参数列表,但没有允许传入用户名/密码的选项.请帮忙!
UITableView提供了方法indexPathsForVisibleRows和visibleCells,但我怎么能得到明显的板块?
我意识到我正在做的事情可能很愚蠢,但我正在学习WPF,并想知道如何做到这一点.
我有一个带有列表框的窗口.列表框用于在程序运行时传递有关程序的状态消息.例如"服务器启动""IP连接时的新连接"等.我希望在后台不断更新,所以我产生了一个新的线程来处理更新这个,但是当我调用添加项目时,我得到了错误消息"调用线程无法访问此对象,因为另一个线程拥有它."
知道如何从另一个线程更新列表框吗?或者在后台等
好吧,这是我第十次发生这种情况.
我在Eclipse中碰到了一些热键,并且它"包装了"所有我的代码!
示例(注意新行上的加号):
// Split the formula into two parts: bit/byte range, and formula.
try {
formulaParts = formulaAndBitPositions.split(",");
} catch (Exception e) {
msg("PD ERROR during decode: DPN=" + DPN
+ " formulaAndBitPositions=" + formulaAndBitPositions
+ " E= " + e.getMessage());
return;
}
Run Code Online (Sandbox Code Playgroud)
所以超过80个字符的每一行都被包裹了!grrrrrrrrr!
谁知道哪个可怕的可怕热键对此负责?
我需要包含另一个URL上的外部文件.例如google.com.我已经使用本地文件测试了include,因此有很多功能,但如果我尝试使用127.0.0.1/filetoinclude.txt则没有任何反应.我没有收到错误,我只是得到一个空白页面.那么我应该如何在我的网页中加入http://google.com?
我想要一个匹配包含的字符串的正则表达式
- At least one brace: } or {
and
- At least one digit: \d
and
- At least one instance of either: <p> or </p>
Run Code Online (Sandbox Code Playgroud)
但是以任何顺序,以便匹配所有以下内容:
<p>{123
2}</p>
2<p>}}}
{}{}{}<p></p></p>234234}}}
Run Code Online (Sandbox Code Playgroud)
这些都不匹配:
<p>{ alphabet 123
{2}
{{{}}}
<p>1</p>
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所要求的,它只需要其中任何一个组件:
(<\/p>|<p>|\d|\}|\{)+
Run Code Online (Sandbox Code Playgroud)
我的问题是,我不知道如何使它更通用,而不必像这样指定顺序:
(<\/p>|<p>)+(\d)+(\}|\{)+
Run Code Online (Sandbox Code Playgroud)
或者让它愚蠢地列举每一个可能的顺序......
我怎么说"任何顺序中至少需要这些组件中的一个?"
谢谢.
我正在创建一个Grails应用程序,它是移动应用程序的后端.它目前部署在Amazon EC2上.它将数据持久保存到mysql数据库.一个实例当前指向数据库.我计划在负载均衡器后面部署应用程序的多个实例,并最终将读取请求发送到数据库的从属实例.我们计划在未来几个月内发布,并拥有一个拥有数千名用户的测试版.它比读写更密集.
我们已经研究过使用mongodb而不是sql,并将其视为一个很好的解决方案.
没有很多扩展mysql(或mongodb)的经验,因为它具有自动分片等功能,所以缩放mongodb会更容易.(寻找那些同时做过这些事情的人们的想法)我认为现在切换到mongodb会更容易,而不是"生产"并且不得不迁移.
思考?
iphone ×3
objective-c ×2
amazon-ec2 ×1
c# ×1
command-line ×1
core-data ×1
cryptoapi ×1
cryptography ×1
eclipse ×1
external ×1
grails ×1
hotkeys ×1
html ×1
include ×1
ios ×1
ipad ×1
mongodb ×1
passwords ×1
php ×1
regex ×1
remember-me ×1
rsa ×1
sha256 ×1
tfs2010 ×1
uitableview ×1
word-wrap ×1
wpf ×1