Tag: 加密

在ASP.NET(C#)中实现安全,独特的“一次性”激活URL

我有一个场景,我正在构建的网站的用户需要能够在不必登录的情况下将一些基本信息输入到webform中。 该站点正在使用ASP.NET / C#开发,并使用MSSQL 2005作为其关系数据。 将向用户发送来自站点的电子邮件,为他们提供唯一链接以输入他们所需的特定信息。 该电子邮件与我们在注册论坛等网站时所获得的电子邮件风格非常相似,其中包含一个随机生成的唯一URL参数,专门用于单一目的(例如validation论坛的电子邮件地址)。 我的问题是关于这个问题的安全实现。 我正在考虑使用GUID作为唯一标识符,但我不确定它在安全领域的影响。 GUID是否足够长,以至于不能轻易猜到值(或随着时间的推移强迫)? .NET的GUID实现是否足够随意,因为在“密钥空间”中生成所有可能值的机会相等? 如果使用GUID是一种可接受的方法,那么网站是否应该通过URL重写或通过将数据表中的信息与GUID相关联来重定向到信息? 使用URL重写会隐藏数据的真正来源吗? 我应该考虑使用TSQL的SELECT NEWID()作为.NET实现的GUID生成器吗? 我对这个问题的处理方法完全错了吗? 非常感谢, 卡尔

如何为加密算法创建加密密钥?

我想使用.Net Security命名空间中提供的加密算法,但是我试图了解如何生成密钥,例如AES算法需要256位,即16字节密钥,以及一些初始化向量,这也是几个字节。 我可以在Key和IV中使用任何值的组合吗? 例如Key和IV中的所有零都有效吗? 我知道算法的细节做了很多xors,所以零不会有任何好处,但这些算法是否有任何限制? 或者我是否必须使用某些程序生成密钥并将其永久保存在某处? 我希望在加密后将数据存储在数据库中,安全配置文件数据,如用户名,密码,电话号码等,密钥将仅供连接字符串中提到的数据库用户使用,并且可供管理员使用。

RSA .NET加密Java解密

我试图通过使用RSA算法加密.NET中的字符串并在Java中解密结果。 目前,我已经能够做相反的事情(在Java中加密,在.NET中解密)。 在这里,我有我的代码实际工作(JAVA加密): byte[] modulusBytes = Base64.decode(“2rRVVVFJRbH/wAPDtnwZwu+nxU+AZ6uXxh/sW+AMCBogg7vndZsnRiHoLttYYPqOyOhfgaBOQogrIfrKL4lipK4m52SBzw/FfcM9DsKs/rYR83tBLiIAfgdnVjF27tZID+HJMFTiI30mALjr7+tfp+2lIACXA1RIKTk7S9pDmX8=”); byte[] exponentBytes = Base64.decode(“AQAB”); BigInteger modulus = new BigInteger(1, modulusBytes ); BigInteger exponent = new BigInteger(1, exponentBytes); RSAPublicKeySpec rsaPubKey = new RSAPublicKeySpec(modulus, exponent); KeyFactory fact = KeyFactory.getInstance(“RSA”); PublicKey pubKey = fact.generatePublic(rsaPubKey); Cipher cipher = Cipher.getInstance(“RSA/ECB/PKCS1Padding”); cipher.init(Cipher.ENCRYPT_MODE, pubKey); byte[] plainBytes = new String(“big kitty dancing”).getBytes(“UTF-8”); byte[] cipherData = cipher.doFinal( […]

如何使用AES(Rijndael)检查文件是否加密

我在C#中使用’RijndaelManaged’和’CryptoStream’类来加密文件。 在加密文件之前,我想检查文件是否已加密。 我尝试使用File.GetAttributes()方法来检查加密,但它无法正常工作。 我需要一些提示,我可以检查文件是否已加密。

指定的填充模式对此算法无效 – c# – System.Security.Cryptography

对c#来说很新,目前在解密长密码时遇到问题,错误是 指定的密钥不是此算法的有效大小 我知道这与加密密码位长度不受支持有关,但不确定如何建议允许这些更长密码的方法。 这是我的加密和解密 “cipherKey”:“0123456789abcdef”,“cipherVector”:“somereallycooliv” using System; using System.Security.Cryptography; using System.IO; using System.Text; namespace DataApi { public class Encryption { private readonly IConfigurationService _configService; private const string _vector = “cipherVector”; private const string _key = “cipherKey”; public Encryption(IConfigurationService configService) { _configService = configService; } public string EncryptString(string text) { if(string.IsNullOrEmpty(text)) { return “”; } try […]

如何使用FromBase64String 创建长度为16的byte

我需要创建一个长度为16的byte[] 。(一个字节数组,有128位用作AES加密中的Key)。 以下是有效的字符串 “AAECAwQFBgcICQoLDA0ODw==” 确定字符串是否为128位的算法是什么? 或者是反复试验是创建这种128位字符串的唯一方法吗? 码 static void Main(string[] args) { string firstString = “AAECAwQFBgcICQoLDA0ODw==”; //String Length = 24 string secondString = “ABCDEFGHIJKLMNOPQRSTUVWX”; //String Length = 24 int test = secondString.Length; byte[] firstByteArray = Convert.FromBase64String((firstString)); byte[] secondByteArray = Convert.FromBase64String((secondString)); int firstLength = firstByteArray.Length; int secondLength = secondByteArray.Length; Console.WriteLine(“First Length: ” + firstLength.ToString()); Console.WriteLine(“Second Length: […]

在c#中加密文件最简单的方法是什么?

事先: 我确实读过关于SO的其他主题,但我找不到答案。 (其他是关于配置文件或技术列表) 因此我的问题很简单,虽然有点主观(我事先会给它贴上标签:-))什么是最简单的方法..

SecureString到Byte C#

我如何得到一个相当于SecureString的byte[] (我从PasswordBox获得)? 我的目标是使用CryptoStream将这些字节写入文件,并且该类的Write方法接受byte[]输入,因此我想将SecureString转换为byte[]以便我可以使用CryptoStream 。 编辑:我不想使用string因为它击败了拥有SecureString的点

如何在.NET应用程序中隐藏加密密钥?

我正在开发一个内部网应用程序(C#),它使用我们想保密的一些数据(Web服务器本地)。 使用遗留数据存储库对此数据进行加密(AES)。 我们无法完全阻止对机器的物理访问。 显然,我们永远不会在这里拥有完美的安全性。 但是,我们希望尽可能让任何人都未经授权访问数据。 问题是如何最好地存储密钥。 可以选择基于某些机器特定ID对其进行加密,但是在机器上运行诊断工具的任何人都可以轻松获得该信息。 在应用程序中对其进行编码是一种选择(它是一次性应用程序)。 但是,.NET程序集很容易反编译。 那么,最好是混淆它,使用加密启动器,编译它? 或者有一个我缺少的选项? 正如我们清楚的那样,我知道如果某人有决心,这几乎是一个失败的原因,但我们希望在限制范围内尽可能地努力。

PHP和C#中的DES加密

我试图在C#代码中使用与PHP相同的DES编码。 C#代码如下所示: public static string EncriptarCadena(string strEncriptar) { DESCryptoServiceProvider provider; MemoryStream stream; CryptoStream stream2; string str2; string str = “29393651”; byte[] buffer2 = new byte[] { 0x45, 50, 0xa5, 0x18, 0x67, 0x58, 0xac, 0xba }; byte[] bytes = new byte[0]; try { bytes = Encoding.UTF8.GetBytes(str.Substring(0, 8)); provider = new DESCryptoServiceProvider(); byte[] buffer = Encoding.UTF8.GetBytes(strEncriptar); stream […]