相关疑难解决方法(0)

如何安全地处理AES"密钥"和"IV"值

如果我使用AES(System.Security.Cryptography)简单地加密和解密SQL服务器中的blob或memo字段,那么我在哪里将"Key"和"IV"值存储在服务器上?(文件,Regkey,Dbase,......)

那些AES"Key"和"IV"值的保护是什么?

背景问题更多:如果"他们"攻击服务器并获得dbase ...那么他们可能也可以进入加密程序的程序(它在同一台服务器上,无法帮助它)...如果"他们"非常好,那么他们会注意到存储"Key"和"IV"值的位置......(.NET 4.5 ILSPY)并且所有内容都可以再次解密.

请指教?你们如何处理AES"Key"和"IV"值?

Ps:这不是关于pwd字段...所以,它不是关于散列...它的纯数据加密.

.net c# encryption cryptography aes

31
推荐指数
3
解决办法
2万
查看次数

如何在机器级RSA密钥容器中存储公钥

当仅存储公钥/私钥对的公钥时,我在使用机器级RSA密钥容器时遇到问题.

以下代码创建公共/私有对,并从该对中提取公钥.该对和公钥存储在单独的密钥容器中.然后从那些密钥容器获得密钥,此时它们应该与进入容器的密钥相同.

该代码在CspProviderFlags.UseDefaultKeyContainer指定时工作CspParameters.Flags(即从PublicKey容器读回的密钥是相同的),但是当CspProviderFlags.UseMachineKeyStorePublicKeyCspParameters.Flags读回的密钥指定时是不同的.

为什么行为不同,我需要做些什么来从机器级RSA密钥容器中检索公钥?

var publicPrivateRsa = new RSACryptoServiceProvider(new CspParameters()
{
    KeyContainerName = "PublicPrivateKey",
    Flags = CspProviderFlags.UseMachineKeyStore
    //Flags = CspProviderFlags.UseDefaultKeyContainer
}
    )
{
    PersistKeyInCsp = true,

};

var publicRsa = new RSACryptoServiceProvider(new CspParameters()
{
    KeyContainerName = "PublicKey",
    Flags = CspProviderFlags.UseMachineKeyStore
    //Flags = CspProviderFlags.UseDefaultKeyContainer
}
    )
{
    PersistKeyInCsp = true
};


//Export the key.
publicRsa.ImportParameters(publicPrivateRsa.ExportParameters(false));


Console.WriteLine(publicRsa.ToXmlString(false));
Console.WriteLine(publicPrivateRsa.ToXmlString(false));

//Dispose those two CSPs.
using (publicRsa)
{
    publicRsa.Clear();
}
using (publicPrivateRsa)
{
    publicRsa.Clear(); …
Run Code Online (Sandbox Code Playgroud)

c# cryptography rsacryptoserviceprovider

9
推荐指数
1
解决办法
2万
查看次数

在TLS加密下使用DefaultNetworkCredential?

我们公司正在将SMTP邮件服务器切换到Office 365.关键问题是新的SMTP服务器"smtp.office365.com"仅支持TLS加密.因此,我不能使用CredentialCache.DefaultNetworkCredentials自动编码我的Windows登录密码.

        var smtpClient = new SmtpClient("smtp.oldserver.com")
        {
            Credentials = CredentialCache.DefaultNetworkCredentials
        };

        const string from = "myemail@xyz.com";
        const string recipients = "myemail@xyz.com";
        smtpClient.Send(from, recipients, "Test Subject", "Test Body");
Run Code Online (Sandbox Code Playgroud)

以前这个没有任何问题.但是,如果我现在将上述代码段更改为:

        var smtpClient = new SmtpClient("smtp.office365.com");
        smtpClient.EnableSsl = true;
        smtpClient.Port = 587;
        smtpClient.Credentials = CredentialCache.DefaultNetworkCredentials;
Run Code Online (Sandbox Code Playgroud)

我现在得到:

Unhandled Exception: System.Net.Mail.SmtpException: The SMTP server requires a secure connection or the client was not authenticated. The server response was: 5.7.57 SMTP; Client was not authenticated to send anonymous mail during MAIL FROM
Run Code Online (Sandbox Code Playgroud)

但是,如果我在代码中指定我的Windows登录用户名和密码,它可以正常工作: …

.net c# email smtp

7
推荐指数
1
解决办法
231
查看次数