标签: digital-signature

保护组件免受黑客攻击

我有一个控制台应用程序引用程序集A.我想确保如果A.dll被篡改或替换,应用程序将无法运行.

一种选择是使用强名称签名.但我是否需要担心强名称绕过

还有其他好的选择吗?

.net verification assemblies data-manipulation digital-signature

3
推荐指数
1
解决办法
245
查看次数

关于证书签名过程的java问题

我很困惑在java中创建由CA签名的有效证书的过程.
我知道java有工具keytool来创建公钥和证书.
它还支持JKS和PKCS#12.
因此,可以创建具有公钥 - 私钥对和证书
keytool -genkey -keyalg RSA -alias aCert -keystore someKeystore.keystore 的密钥库,例如,这将创建具有证书的密钥库(自签名).
到目前为止我明白了.
我可以导出证书以获取csr请求以发送给CA,例如Verisign,当然没有私钥.
在这部分之后我迷失了.
CA会签名,我将不得不重新导入我的密钥库?这将取代密钥库中已有的原始证书?
它仍将是自签名的.
发行人不应该是CA本身吗?但那么这怎么可能呢?我只发送公钥而不是证书?
有关清理流程的任何帮助吗?
更新:
CA签署证书(例如Verisign)也是发行人吗?或者它可以签署证书issuer==subject吗?
谢谢

java security digital-certificate digital-signature x509certificate

3
推荐指数
1
解决办法
1792
查看次数

将私钥存储在数字签名服务器上的何处?

我正在开发一个客户端-服务器应用程序,该应用程序要求一些文件在发送给客户端之前必须先使用私钥进行签名。然后,客户端将使用公钥验证签名。因此,私钥将始终需要位于服务器上,并且可由服务器应用程序读取。

问题是我想知道在哪里存储我的私钥,以防万一服务器受到破坏时更安全。

我应该将其存储在数据库中还是应该将其存储为文件并使用文件许可权进行控制?

谢谢。

linux security encryption digital-signature

3
推荐指数
1
解决办法
2892
查看次数

Git的技术和逻辑背后的"git status"

git status查看本地文件夹中是否有任何更改时会发生什么?

据我所知,每个文件都通过哈希码(准确地说:sha1)进行"注册",并且git status"简单地"尝试匹配到目前为止已注册的哈希值,并且如果有不同的东西则被认为是状态改变.说实话,我不太确定,如果我错了,我想纠正.无论如何,出现了一些问题:

  1. 在哪里可以找到哈希?repo特定的东西有很多哈希,但我在哪里找到每个文件的注册哈希?
  2. 如果运行以下命令之一,这些哈希值会发生什么:git add,git commit -am,git gc

git internals digital-signature

3
推荐指数
1
解决办法
321
查看次数

Itext多个签名

我必须签署一个带有多个签名的pdf.这不是同时完成的.所以A签署文件,2天后,B签署文件,等等......

如Manning iText in Action和Web上的代码示例所述,要在已包含签名的文档上添加签名,我只需在创建签名时添加两个参数:

stamper = PdfStamper.createSignature(this.pdfReader,
                    workingBaos, PdfWriter.VERSION_1_7, null, true);
Run Code Online (Sandbox Code Playgroud)

null因为我不想使用临时文件和true,要使用追加模式并创建新版本.

问题是当我打开pdf时,Acrobat Reader说只有最后一个签名是有效的.以前的签名都是无效的.当我用iText验证pdf时,没有问题.

我错过了什么吗?

java pdf itext digital-signature

3
推荐指数
1
解决办法
5296
查看次数

EC签名尺寸?

我已经挣扎了一段时间了.这是我的情景.我正在尝试生成25个字符的软件产品密钥(如Microsoft风格的FFFFF-EEEEE-DDDDD-BBBBB-77777).我已经通过nonce(原始产品密钥)成功生成 - 根据这篇文章,我的最终产品密钥(在以24格式编码之前)应该恰好是15个字节(我的nonce为4个字节,我的数字签名为11个字节).

现在的问题是如何生成一个11字节的签名?我尝试使用当前最短的签名加密(ECC - 使用secp128r2曲线 - 它给我一个128位私钥).签名后,我的签名大小为80字节(由Java语句打印)

System.out.println("length: "+signedProductKeyBytes.length);
Run Code Online (Sandbox Code Playgroud)

我的问题是:

  1. EC密钥大小(以位为单位)与生成的EC签名长度(以字节为单位)之间的关系究竟是什么?

  2. 例如,128位的EC密钥应该产生多少字节的签名大小?

  3. 我如何生成一个11字节的签名(顺便说一下,我确定在Windows XP时代没有EC密钥 - 所以MS没有使用EC - 有更好的方法吗?假设使用RSA 32位密钥或者其他的东西?)?

  4. 字符串的大小(在我的情况下,它只是9个字符的字符串,例如"123456789"被签名在签名的最后长度中起作用?

已经挣扎了一段时间,在网上到处搜索 - 通过大量的技术会谈回答 - 但没有具体回答我的问题(我得到的最近的是 RSA密钥的这篇文章)

我希望我得到一些快速反应 - 我的项目已经很晚了几周.多谢你们!

java security cryptography digital-signature

3
推荐指数
1
解决办法
2110
查看次数

什么是PKCS11中的"机制"?

机制在PKCS11中意味着什么?例如:CKM_RSA_PKCS.

机制(CKM_RSA_PKCS)和签名算法(NoneWithRSA)之间有什么区别?

security rsa digital-signature pkcs#11

3
推荐指数
1
解决办法
2466
查看次数

使用Oauth在android中调用yahoo api

我想使用Yahoo API在Android中获取登录用户的电子邮件.我已经获得了访问令牌和用户GUID,但获取用户电子邮件的下一步无效.

我收到以下回复消息:

{oauth=WWW-Authenticate: OAuth oauth_problem="OST_OAUTH_SIGNATURE_INVALID_ERROR", realm="yahooapis.com"}
Run Code Online (Sandbox Code Playgroud)

我的代码可以发现这里和问题记录在这里的线179.

请帮我解决这个问题.

android oauth digital-signature yahoo-api

3
推荐指数
1
解决办法
1878
查看次数

jwt签名:RS256或HS256

在Auth0中,有两种用于jwt令牌签名的算法:RS256和HS256。

RS256是一种非对称算法,这意味着有两个密钥:一个公共密钥和一个私有密钥(秘密)。Auth0具有用于生成签名的密钥,而JWT的使用者具有用于验证签名的公共密钥。

HS256是一种对称算法,这意味着只有一个秘密密钥,在两方之间共享。相同的密钥可用于生成签名并进行验证。为了使密钥保持机密,应格外小心。

他们在文档中描述了的优势RS256。有人可以向我解释使用HS256算法的优点,我现在看不到它们,但是我很确定有一些优点。

signature digital-signature jwt

3
推荐指数
1
解决办法
1162
查看次数

如何使用Google Apps脚本使用双数组键或十六进制字符串键对HMAC SHA256签名字符串?

Signature Version 4上AWS示例之后,我尝试使用带有Google apps脚本的Google Sheets重现该示例。我在示例中遇到了kregion签名的问题。尽管我可以使用在线签名工具确认AWS示例有效,但是我永远无法使用任何Google应用程序脚本来复制示例输出。由于HMAC SHA256签名在示例的早期部分(kdate)可以正常工作,因此问题似乎出在存储或使用数据的方式上。

以下是适用于kDate的内容:来自另一个stackoverflow条目的部分,用于将字节数组转换为十六进制字符串,并借助computeHmacSha256SignatureGoogle Apps脚本文档

var input="20120215";
var key="AWS4"+"wJalrXUtnFEMI/K7MDENG+bPxRfiCYEXAMPLEKEY";//Do not worry, this is an example key, not my actual key
var signature=Utilities.computeHmacSha256Signature(input,key);
signature=signature.map(function(chr){return (chr+256).toString(16).slice(-2)}).join('');//convert byte array to hex string
Logger.log(signature);//valid 969fbb94feb542b71ede6f87fe4d5fa29c789342b0f407474670f0c2489e0a0d
Run Code Online (Sandbox Code Playgroud)

这是kRegion的同一件事:

var input="us-east-1";
var key="969fbb94feb542b71ede6f87fe4d5fa29c789342b0f407474670f0c2489e0a0d";
var signature=Utilities.computeHmacSha256Signature(input,key);
signature=signature.map(function(chr){return (chr+256).toString(16).slice(-2)}).join('');
Logger.log(signature);//non-valid a59e30f9d899c47b3dd68ea1c0ab3bb529e03a8f4ed2f54cb64af547330a22a0
Run Code Online (Sandbox Code Playgroud)

我不惊讶它不会产生有效的示例kRegion输出,69daa0209cd9c5ff5c8ced464a696fd4252e981430b10e3d3fd8e2f197d7a70c因为密钥存储为十六进制字符串,这没有多大意义。这是试图将十六进制字符串解码为从此github条目启发而来的字节数组的同一件事:

var input="us-east-1";
var key="969fbb94feb542b71ede6f87fe4d5fa29c789342b0f407474670f0c2489e0a0d";
var a=[];
for(var i=0, len=key.length; i<len; i+=2) {
  a.push(parseInt(key.substr(i,2),16));
}
key=a;
Logger.log(key);//[150.0, …
Run Code Online (Sandbox Code Playgroud)

sha256 digital-signature hmac amazon-web-services google-apps-script

3
推荐指数
1
解决办法
94
查看次数