我正在寻找一个简单的解决方案来生成一对密钥(公共/私人)加密/散列一个字符串,然后能够检查该字符串是否使用公钥加密/散列。
是否有一个简单的解决方案(CryptoAPI)?
我正在寻找一个起点。
我目前正在使用 Python 处理一些 PDF 处理代码。对于这个项目,软件需要能够验证 PDF 是否具有有效的数字签名。到目前为止,在我的搜索中,我发现了一些可以解决问题的 Java API(例如 iText),但在 Python 中却没有。如果有人有以下任何一项的链接,将不胜感激:
其他细节:
我正在认证为我JSON-RPC API和我的当前工作的策略是使用通过发送请求签约POST了SSL。
我想知道是否有人可以看到我没有使用以下签名方法考虑的任何漏洞。
客户端和服务器之间的所有通信都是通过POST发送的请求完成的SSL。httpAPI 服务器会直接拒绝不安全的请求。
依赖关系
var uuid = require('node-uuid');
var crypto = require('crypto');
var moment = require('moment');
var MyAPI = require('request-json').newClient('https://api.myappdomain.com');
Run Code Online (Sandbox Code Playgroud)
依赖链接:node-uuid , crypto , moment , request-json
瓦尔斯
var apiVersion = '1.0';
var publicKey = 'MY_PUBLIC_KEY_UUID';
var secretKey = 'MY_SECRET_KEY_UUID';
Run Code Online (Sandbox Code Playgroud)
请求对象
var request = {
requestID : uuid.v4(),
apiVersion : apiVersion,
nonce : uuid.v4(),
timestamp : moment.utc( new Date() ),
params : params
}
Run Code Online (Sandbox Code Playgroud)
签名 …
我想在 C# 中生成 RSA 密钥对。我能够获取密钥的 xml 字符串,但我需要它们的 base64 表示。这是我的 xml 代码
RSACryptoServiceProvider rsa = new RSACryptoServiceProvider();
privateKeyXmlText = rsa.ToXmlString(true);
publicKeyXmlText = rsa.ToXmlString(false);
Run Code Online (Sandbox Code Playgroud)
但我想要的是
privateKeyStr=="MIICITAjBgoqhkiG9w0BDAEDMBUEEKaTCK5mE2MsQANxDAfaJe8CAQoEggH47qb6bFO+a2Fj...";
publicKeyStr == "MIIBKjCB4wYHKoZIzj0CATCB1wIBATAsBgcqhkjOPQEBAiEA/////wAA...";
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
我安装了 Inno Setup 和 Inno Script Studio,以及 Visual Studio 2013。我有一个数字证书,用密码保护,名为certificate.p12. 我还安装了 Windows 8.1 驱动程序 SDK(虽然我运行的是 Windows 7 Professional x64)。我在安装程序中包含的编译输出已经签名。
我使用名为的签名工具my_signtool和以下命令配置了 Inno Script Studio :
"C:\Program Files (x86)\Windows Kits\8.1\bin\x64\signtool.exe" sign /f "z:\full\path\to\certificate.p12" /p "password" $f
Run Code Online (Sandbox Code Playgroud)
...在我的.iss文件中,我有:
SignTool=my_signtool
Run Code Online (Sandbox Code Playgroud)
在我的计算机上使用此设置,它可以完美运行。我编译项目,Inno Setup 会自动对安装程序及其卸载程序进行签名。
但是,我有一个同事应该是完全相同的设置。他拥有 Visual Studio 2013、Inno Setup 和 Inno Script Studio、证书副本及其密码。当他尝试编译它时, Inno Setup 失败,说试图针对uninst.e32.tmp返回运行 signtool 0x1。当他运行它尝试在命令提示符下手动运行的确切命令时,它失败了,指出uninst.e32.tmp不可用,但这似乎很正常,因为我怀疑 Inno Setup 只是在错误发生后自行清理(或者是吗?)。
我试过用$q符号工具的定义替换引号无济于事。事实上,除了通向signtool.exe自身的路径之外,所涉及的路径都没有任何空间。
我们的两个输出最初都是这样的。紧接着就是他们分歧的地方:我的继续运行,他抱怨签名工具失败了0x1。
Starting compile. [Monday, January 12 …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 Protobuf 序列化/反序列化子消息。这样做的原因是签署。我希望能够签署我的部分信息。为了能够做到这一点,我需要以某种方式规范化它。
如果重要的话,我将 protbuf 3.0.0-alpha(使用 proto2 语言)与 Python3.4 一起使用。
示例文件:testp.proto
package my_package;
message my_mess {
message data {
optional uint64 x = 1;
optional uint64 y = 2;
optional uint64 z = 3;
}
optional bytes signature = 4;
}
Run Code Online (Sandbox Code Playgroud)
在这个例子中,我想对消息的数据部分进行签名。因此我只想序列化my_mess.data,签名,将签名放入my_mess.signature,然后序列化完整的消息my_mess。
编译 testp.proto:
$ protoc -I=. --python_out=. testp.proto
[libprotobuf WARNING google/protobuf/compiler/parser.cc:471] No syntax specified for the proto file. Please use 'syntax = "proto2";' or 'syntax = "proto3";' to specify a syntax version. (Defaulted to proto2 syntax.)
Run Code Online (Sandbox Code Playgroud)
我注意到 mm.data 有方法 …
我已成功将 mupdf 集成到我的项目中。现在我可以浏览pdf,添加新的注释和编辑,但我不知道如何将数字签名嵌入到pdf中。
任何人都可以建议我将数字签名嵌入到 pdf 中的步骤吗?
克隆远程 git 存储库并发出 后git show --show-signature,它表示签名良好。然后我更改了一些文件并测试了相同的命令,它仍然说签名良好。
上面的命令到底检查什么?验证克隆的git的正确方法是什么?开发者的意思是什么?
我正在尝试学习使用 Apache 的 pdfBox 来处理工作中的数字签名文档。在测试过程中,我创建了一个完全空的 pdf 文档。
然后我通过 Adobe reader 使用带有证书的签名功能对文档进行了签名。
我尝试使用 pdfBox 打开、保存和关闭签名文件,而不进行任何修改。但是,一旦我在 Adobe 中打开该文件,这些文件就不再有效。
Adobe 告诉我:“此签名中包含的格式或信息存在错误(支持信息:SigDict/Contents 非法数据)”
由于我没有修改文件的内容,直观上不应该有任何问题,签名应该仍然有效,但事实并非如此,我不知道解决方案是什么(谷歌搜索没有结果)。
我如何创建文档:
@Test
public void createEmptyPDF() throws IOException {
String path = "path to file";
PDDocument document = new PDDocument();
PDPage page = new PDPage();
document.addPage(page);
document.save(path);
document.close();
}
Run Code Online (Sandbox Code Playgroud)
然后我用 adobe 签名并通过以下方式传递:
@Test
public void copySignedDocument() throws IOException {
String path = "path to file";
File file = new File(path);
PDDocument document = PDDocument.load(file);
document.save(file);
document.close();
//just opening and saving the …Run Code Online (Sandbox Code Playgroud) 我想分发一些 PHP 源代码,我需要提供一种方法来验证这些源代码没有被更改。
所以基本上我想对它们进行签名(如果可能的话使用 PHP),然后检查它们的签名(必须使用 PHP,它必须在 Linux 和 Windows 上都工作)。
我一直在挖掘,我发现的是:
如果任何人都可以验证这个过程(或指出更好的过程),那将是一个很大的帮助。
因为我试图给出我现在找到的理论解决方案,但是理论和实践之间应该是有差距的。特别是考虑到我对这个概念还很陌生,并且在安全方面保持稳固对于我的项目来说至关重要。我记得几年前使用苹果的签名过程是一件很痛苦的事,我对自己创建安全解决方案的能力没有信心。