标签: cryptography

将SHA1和RSA与java.security.Signature与MessageDigest和Cipher一起使用

我试图了解Java java.security.Signature类的功能.如果我计算SHA1消息摘要,然后使用RSA加密该摘要,我得到一个不同的结果,要求Signature类签署相同的东西:

// Generate new key
KeyPair keyPair = KeyPairGenerator.getInstance("RSA").generateKeyPair();
PrivateKey privateKey = keyPair.getPrivate();
String plaintext = "This is the message being signed";

// Compute signature
Signature instance = Signature.getInstance("SHA1withRSA");
instance.initSign(privateKey);
instance.update((plaintext).getBytes());
byte[] signature = instance.sign();

// Compute digest
MessageDigest sha1 = MessageDigest.getInstance("SHA1");
byte[] digest = sha1.digest((plaintext).getBytes());

// Encrypt digest
Cipher cipher = Cipher.getInstance("RSA");
cipher.init(Cipher.ENCRYPT_MODE, privateKey);
byte[] cipherText = cipher.doFinal(digest);

// Display results
System.out.println("Input data: " + plaintext);
System.out.println("Digest: " + bytes2String(digest));
System.out.println("Cipher text: " + bytes2String(cipherText)); …
Run Code Online (Sandbox Code Playgroud)

java encryption cryptography rsa digital-signature

67
推荐指数
3
解决办法
10万
查看次数

如何在Apache上默认启用完美的前向保密?

警告:请仅使用以下答案中的Apache配置建议.对于要使用的密码 - 安全规范会随着时间的推移而改变,下面的一些安全建议已经过时了.

在最近发生的事件之后,我一直在重新考虑我的Apache设置.目前,我的apache站点配置看起来像这样:

 <IfModule mod_ssl.c>
    <VirtualHost *:80>
            ServerName example.com
            ServerAlias www.example.com
            Redirect permanent / https://example.com
    </VirtualHost>

    <VirtualHost *:443>
            ServerAdmin webmaster@localhost
            ServerName example.com

            DocumentRoot /var/www-wordpress
            <Directory />
                    Options FollowSymLinks
                    AllowOverride None
            </Directory>
            <Directory /var/www-wordpress>
                    Options Indexes FollowSymLinks MultiViews
                    AllowOverride FileInfo
                    Order allow,deny
                    allow from all
            </Directory>

            ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
            <Directory "/usr/lib/cgi-bin">
                    AllowOverride None
                    Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                    Order allow,deny
                    Allow from all
            </Directory>

            ErrorLog ${APACHE_LOG_DIR}/error.log
            LogLevel warn

            CustomLog ${APACHE_LOG_DIR}/ssl_access.log combined
            SSLCertificateFile    /etc/ssl/certs/example.com.crt
            SSLCertificateKeyFile /etc/ssl/private/example.com.key
            SSLCertificateChainFile /etc/ssl/certs/sub.class1.server.ca.pem
            <FilesMatch "\.(cgi|shtml|phtml|php)$">
                    SSLOptions …
Run Code Online (Sandbox Code Playgroud)

apache ssl cryptography

66
推荐指数
2
解决办法
7万
查看次数

为什么java.security.NoSuchProviderException没有这样的提供者:BC?

jar(bcprov-jdk16-145.jar)已添加到项目中,Security.addProvider(new org.bouncycastle.jce.provider.BouncyCastleProvider())已添加到类中,并BouncyCastleProvider.PROVIDER_NAME返回"BC"但AesFileIo.writeFile()仍然会抛出java.security.NoSuchProviderException No such provider: BC.有任何想法吗?

import java.io.FileOutputStream;
import java.io.InputStreamReader;
import java.io.ObjectOutputStream;
import javax.crypto.Cipher;
import javax.crypto.spec.IvParameterSpec;
import javax.crypto.spec.SecretKeySpec;
import org.bouncycastle.jce.provider.BouncyCastleProvider;

public class AesFileIo {

    private static final String AES_ALGORITHM = "AES/CTR/NoPadding";
    private static final String PROVIDER = BouncyCastleProvider.PROVIDER_NAME;
    private static final byte[] AES_KEY_128 = { // Hard coded for now
        78, -90, 42, 70, -5, 20, -114, 103,
        -99, -25, 76, 95, -85, 94, 57, 54};
    private static final byte[] IV = { // …
Run Code Online (Sandbox Code Playgroud)

java security cryptography jce

65
推荐指数
3
解决办法
11万
查看次数

什么是最佳的scrypt工作因素?

我正在使用Java scrypt库进行密码存储.当我加密东西时N,它需要一个rp值,其文档称为"CPU成本","内存成本"和"并行化成本"参数.唯一的问题是,我实际上并不知道它们的具体含义,或者对它们有什么好的价值; 也许他们以某种方式对应于Colin Percival原创应用中的-t,-m和-M开关?

有人对此有任何建议吗?图书馆本身列出N = 16384,r = 8和p = 1,但我不知道这是强还是弱或是什么.

java cryptography scrypt

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

如何通过RSA生成唯一的公钥和私钥

我正在构建一个自定义购物车,其中CC号和Exp日期将存储在数据库中,直到处理(然后删除).我需要加密这些数据(显然).

我想使用RSACryptoServiceProvider类.

这是我创建密钥的代码.

public static void AssignNewKey(){
    const int PROVIDER_RSA_FULL = 1;
    const string CONTAINER_NAME = "KeyContainer";
    CspParameters cspParams;
    cspParams = new CspParameters(PROVIDER_RSA_FULL);
    cspParams.KeyContainerName = CONTAINER_NAME;
    cspParams.Flags = CspProviderFlags.UseMachineKeyStore;
    cspParams.ProviderName = "Microsoft Strong Cryptographic Provider";
    rsa = new RSACryptoServiceProvider(cspParams);

    string publicPrivateKeyXML = rsa.ToXmlString(true);
    string publicOnlyKeyXML = rsa.ToXmlString(false);
    // do stuff with keys...
}
Run Code Online (Sandbox Code Playgroud)

现在计划将私钥xml存储在连接到管理器密钥链的USB驱动器上.

每当经理离开公司时,我希望能够生成新的公钥和私钥(并使用新的公钥重新加密所有当前存储的CC号).

我的问题是这段代码生成的密钥总是一样的.我每次如何生成一组独特的密钥?

UPDATE.我的测试代码如下:
注意:这里的"privatekey"参数是原始私钥.为了更改密钥,我需要验证私钥是否有效.

在Default.aspx.cs中

public void DownloadNewPrivateKey_Click(object sender, EventArgs e)
{
    StreamReader reader = new StreamReader(fileUpload.FileContent);
    string privateKey = reader.ReadToEnd();
    Response.Clear();
    Response.ContentType = "text/xml"; …
Run Code Online (Sandbox Code Playgroud)

c# encryption cryptography rsa key

64
推荐指数
3
解决办法
11万
查看次数

如何从.NET读取PEM RSA私钥

我有格式的RSA私钥PEM,是否有直接的方式从.NET读取并实例化RSACryptoServiceProvider解密用相应的公钥加密的数据?

.net c# cryptography rsa

62
推荐指数
3
解决办法
11万
查看次数

随机数生成最安全的种子是什么?

种子随机数生成器最安全的熵源是什么?此问题与语言和平台无关,适用于网络上的任何计算机.理想情况下,我正在寻找托管公司提供的云环境或服务器中的计算机可用的源.

要牢记两个重要的弱点.使用时间发送随机数发生器违反了CWE-337.使用小种子空间将违反CWE-339.

security random cryptography

62
推荐指数
6
解决办法
2万
查看次数

如何创建和使用nonce

我正在运行一个网站,并且有一个评分系统可以为您提供玩游戏次数的积分.

它使用散列来证明http请求的完整性,因此用户无法改变任何东西,但是我担心可能发生,有人发现他们不需要改变它,他们只需要获得高分,并复制http请求,标题和所有.

以前我被禁止防止这种攻击,因为它被认为是不可能的.但是,既然已经发生了,我可以.http请求源自Flash游戏,然后由php验证并且php将其输入数据库.

我很确定nonce会解决这个问题,但我不确定如何实现它们.设置nonce系统的常用且安全的方法是什么?

php cryptography actionscript-3 nonce

62
推荐指数
2
解决办法
7万
查看次数

如何在python中创建一个加密安全的随机数?

我在python中创建一个项目,我想创建一个加密安全的随机数,我该怎么做?我在网上看到,常规随机数生成的数字不具有加密安全性,并且该函数os.urandom(n)返回一个字符串,而不是数字.

python random cryptography

60
推荐指数
4
解决办法
3万
查看次数

C#RSA加密/解密与传输

我在C#网上看到了大量使用System.Security.Cryptography.RSACryptoServiceProvider的加密/解密教程和示例,但我希望能够做到的是:

  • 创建RSA公钥/私钥对
  • 传输公钥(或者为了概念验证,只需将其移动到字符串变量中)
  • 创建一个新的RSA加密提供程序并使用公钥加密字符串
  • 将加密的字符串(或数据)传回原始的加密提供程序并解密该字符串

有人能指点我这个有用的资源吗?

c# cryptography rsa

58
推荐指数
3
解决办法
10万
查看次数