我正在使用第三方信用卡处理服务(Paybox),在成功交易后,重定向回网站,并在URL中签名作为安全措施,以防止人们操纵数据.它应该证明请求源自此服务.所以我的成功URL看起来像这样:
/success.php?signature=[HUGE HASH]
我不知道从哪里开始验证这个签名.这项服务确实提供了一个公钥,我认为我需要创建一个私钥,但除此之外我不知道.
我对linux非常好,我知道我必须运行一些openssl命令.我正在用PHP编写验证脚本,它也有本机openssl()函数.
如果有人能用一些伪代码甚至功能代码向我推进正确的方向,我将非常感激.谢谢.
我正在为jdownloader制作一个新的插件,一个开源下载管理器.我在eclipse中制作了这个插件.我尝试将包导出为jar文件并将其放在插件目录中,但jdownloader无法识别新插件.
我注意到其他作者的所有其他jdownloader插件都在jar存档文件中,包括带有java类的清单及其相应的SHA1-Digest值.这是否意味着我需要我的罐子数字签名?如果是这样,怎么样.
如何确定是否需要使用经过数字签名的jar来处理特定应用程序?我无意将其公之于众,因为除了我之外,对任何人都没用.
我想与SunMSCAPI提供商签署文件.由于需要使用MS Crypto API导入公钥和签名.
通常生成签名SHA1withRSA,最终使用big-endian到little-endian(字节顺序)转换.
//generate keystore with java keytool
$Keytool -genkey -alias tsign -keystore c:\test\tsignjks.p12 - keyalg rsa -storetype pkcs12
Run Code Online (Sandbox Code Playgroud)
在Java应用程序中:
//for signing and getting keystore, assuming windows certificate is installed
..ks = KeyStore.getInstance("Windows-MY","SunMSCAPI");
PrivateKey priv = ks.getKey("tsign",password);
Signature rsa = Signature.getInstance("SHA1withRSA","SunMSCAPI");
rsa.initSign(priv);
..
rsa.update(buffer, 0, len);
..
byte[] realSig = rsa.sign();
//for writing public key for ms crypto api or exporting it from windows certificate store
Certificate cert = ks.getCertificate("tsign");
byte[] encodedCert = cert.getEncoded();
FileOutputStream …Run Code Online (Sandbox Code Playgroud) 正如标题所示,我想知道给定的PDF文件是否已经过数字签名.
我使用iText签名但我不知道它是否已签名以最终辞职或执行其他操作.
有没有办法简单地(可能使用iText)?
美好的一天,
我正在尝试将时间戳信息嵌入到pdf签名中,以便adobe会向我报告签名是时间戳.目前,我所获得的只是Adobe报告"签名包含嵌入式时间戳,但无法验证",当您查看日期/时间属性时,它表示"时间戳授权"不可用和"显示证书"是灰色的.
显然,我在构建PKCS#7消息时做错了.但我现在不知道.有人可以通过描述我需要采取的步骤来帮助我,以便我的签名有时间戳吗?或者建议一个可以帮我找到问题的工具?
我正在使用Crypto API.我目前遵循的步骤如下:
如何检查数据是否正确,以便adobe可以告诉我签名已被加上时间戳?
此致,玛格达
我的任务是创建以数字形式进行数字签名的数据PKCS#7 version 1.5 (RFC 2315) DER (ITU-T Recommendation X.690)- 基本上ANSI.1用X.509 signature?
消息必须满足以下条件:
signedData我的代码如下
static void Main(string[] args)
{
string pfx = @"C:\Users\marek\Downloads\mfcr\marek-pfx.pfx";
string xml = @"C:\Users\marek\Downloads\mfcr\souhr20141.xml";
X509Certificate2 cert = new X509Certificate2(pfx, "thepass");
byte[] publicBytes = cert.RawData;
//var f = new FileStream(xml, System.IO.FileMode.Open);
var fileContent = System.IO.File.ReadAllBytes(xml);
char[] cArray = System.Text.Encoding.ASCII.GetString(fileContent).ToCharArray();
RSACryptoServiceProvider rsa = (RSACryptoServiceProvider)cert.PrivateKey;
byte[] signedData = rsa.SignData(new System.Text.UTF8Encoding().GetBytes(cArray), new SHA1CryptoServiceProvider());
RSACryptoServiceProvider rsa2 = (RSACryptoServiceProvider)new X509Certificate2(publicBytes).PublicKey.Key;
var dataGenerator = …Run Code Online (Sandbox Code Playgroud) 我有消息(m),我想通过不安全的方式发送数据后存储一些数据以验证其完整性。
我可以创建一个数字签名(DSA / RSA)。
或者,我可以计算摘要(哈希)并将其加密。
无论如何,当接收方收到消息时,应验证其完整性。
哪种方法更安全S(m)或C(H(m))?
更新
假设爱丽丝想向鲍勃发送一条消息
使用数字签名:
爱丽丝的部分:
鲍勃的部分:
使用摘要:
爱丽丝的部分:
鲍勃的部分:
我看到了使用发布的第二种方法的软件,但是我认为第一种更安全,对吗?
更新2
总之,最好的方法是使用第一种方法通过安全方式与Bob共享Alice的公钥。
第二种方法根本不提供安全性。
感谢@Perseids
这是例外
Exception in thread "main" java.security.NoSuchAlgorithmException: RSA Signature not available
at java.security.Signature.getInstance(Signature.java:229)
at MailClient.main(MailClient.java:52)
这是我的代码
import java.io.*;
import java.net.*;
import java.nio.ByteBuffer;
import java.util.*;
import java.security.*;
public class MailClient {
public String getMessage(Mail m){
return m.message;
}
public static void main(String[] args) throws Exception {
// Initialisation
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String host = args[0];
int port = Integer.parseInt(args[1]);
String userid = args[2];
while(true) {
// connect to server
Socket s = new Socket(host,port);
DataInputStream dis = new DataInputStream(s.getInputStream()); …Run Code Online (Sandbox Code Playgroud) 我正在尝试检查DLL是否基于文件路径进行了签名。我看到使用WinVerifyTrust可以解决此类问题,但是当我尝试针对“ C:\ Windows \ System32 \ kernel32.dll”进行检查时,它说:“文件“ C:\ Windows \ System32 \ kernel32.dll”未签名。” 尽管kernel32应该是一个签名的dll。我在Windows 7 Fyi上。
这是我调用的函数的源代码:https : //msdn.microsoft.com/zh-cn/library/windows/desktop/aa382384(v=vs.85).aspx
如何修复该功能?