Tag: 加密

如何在JavaScript中加密字符串并在C#中解密该字符串

我之前看到过这个问题,但在这些情况下,海报想要在面向公众的网站上加密某些内容(通常是url),而且回复主要是“不要!”。 但是,在我的情况下,JavaScript将存储在非公共内部系统中,所以我认为我有更多的余地。 类似问题的一个例子是: 如何在javascript中加密url并在c#中解密 – 并且答案实际上没有回答问题。 我的“JavaScript”实际上是“SuiteScript”,其定义为“SuiteScript是一种基于JavaScript的API,可让开发人员扩展NetSuite”,其中NetSuite是托管的CRM软件包,因此用于加密我的字符串的任何编码都将是隐藏给每个人,除了我公司的员工(因此被认为安全隐藏)。 我想做的是: 生成一个查询字符串(例如userid = guidValue&firstName = stringValue&company = stringValue&…), 使用安全方法加密(例如AES256,RSA,无论有人认为这是安全的), 在我的基于C#的网站上调用网页,在URL中传递此字符串(例如mysite.com/mypage.aspx?encStr=encryptedString) 让C#页面解密它,分离名称/值对并处理它们。 我已经google搜索stackoverflow,但没有找到任何文章或答案提供可以由两种技术使用的加密方法的明确说明。 有人有这样的指示吗?

在使用RSA在iPhone上加密的C#中解密时遇到问题

到目前为止,我已经花了两天时间来处理这个问题,并且可以根据我的需要进行梳理,所以这是最后的选择。 我有一个X509证书,其公钥存储在iPhone的钥匙串中(此时仅为模拟器)。 在ASP.NET方面,我在证书库中获得了带有私钥的证书。 当我在iPhone上加密字符串并在服务器上解密它时,我收到CryptographicException “Bad data”。 我尝试了在RSACryptoServiceProvider页面上建议的Array.Reverse,但它没有帮助。 我比较了两侧的64弦,它们是相同的。 我在解码后比较了原始字节数组,它们也相等。 如果我使用公钥在服务器上加密,则字节数组与iPhone的版本不同,并且可以使用私钥轻松解密。 原始明文字符串是115个字符,因此它在我的2048位密钥的256字节限制范围内。 这是iPhone加密方法(几乎逐字逐句来自CryptoExercise示例应用程序的wrapSymmetricKey方法): + (NSData *)encrypt:(NSString *)plainText usingKey:(SecKeyRef)key error:(NSError **)err { size_t cipherBufferSize = SecKeyGetBlockSize(key); uint8_t *cipherBuffer = NULL; cipherBuffer = malloc(cipherBufferSize * sizeof(uint8_t)); memset((void *)cipherBuffer, 0x0, cipherBufferSize); NSData *plainTextBytes = [plainText dataUsingEncoding:NSUTF8StringEncoding]; OSStatus status = SecKeyEncrypt(key, kSecPaddingNone, (const uint8_t *)[plainTextBytes bytes], [plainTextBytes length], cipherBuffer, &cipherBufferSize); […]

如何在我的应用程序中存储秘密?

我在回答一个问题时建议使用.NET的加密库(例如AesManaged ),当我想知道:“但应该放置应用程序所使用的密钥?”。 我有一个秘密,我需要存储在我的应用程序中,应该由应用程序使用,但用户不知道,我不知道如何做到这一点。 我正在谈论的那种秘密不是与用户相关的东西(例如,用户对第三方服务的密码),而是用户不应该知道的与应用程序或开发人员相关的东西(例如,如果用户知道应用程序的他可以冒充OAuth客户端秘密冒充第三方服务)。 我知道Window的Credential Manager , Data Protection API等,但它们在这种情况下没有帮助,因为它们旨在保护用户的秘密,而且大多数都是运行时解决方案,而我需要保护的是“常量“和”编译时间“。 我完全知道我将采取的任何行动只会延迟熟练和确定的用户访问秘密,因为如果应用程序必须以明文forms访问它,用户也可以以某种方式访问​​它。 我正在寻找的是防止临时用户“在记事本中”打开应用程序并获取秘密。 我完全清楚,任何一种措施只会暂时阻止熟练和坚定的用户访问这样的秘密,我不是要求解决问题的防弹解决方案,我对除了编写var myClientSecret = “MySuperSecretClientSecretKey”;之外的其他选择感兴趣var myClientSecret = “MySuperSecretClientSecretKey”; 存储此类信息。 var myClientSecret = Encoding.UTF8.GetBytes(“MySuperSecretClientSecretKey”)是唯一的选择吗? 框架是否提供了帮助我完成此任务的任何内容?

加密许可证文件的有效方法?

对于Web应用程序,我想创建一个简单但有效的许可系统。 在C#中,这有点困难,因为任何安装了Reflector的人都可以查看我的解密方法。 有哪些方法可以加密C#中相当防篡改的文件?

PHP相当于.net AES加密

我正在与客户进行数据交换集成,他们发送给我的数据使用他们的C# encrypt方法encrypt (如下)。 我的应用程序正在运行PHP 5.3,我需要一个等效的代码来解密他们发送的数据。 我有PHP代码,但它不能正确解密客户端数据。 显然,我在加密/解密方法,IV键或其他方面犯了一些错误。 谁能发现错误? 谢谢。 C#代码(来自我的客户): using System; using System.Security.Cryptography; using System.Text; using System.IO; public class Program { public static void Main() { var text = “this is a plain string”; var enc = Program.Encrypt(text); Console.WriteLine(enc); Console.WriteLine(Program.Decrypt(enc)); } public static string Encrypt(string clearText) { var EncryptionKey = “1234567890123456”; byte[] clearBytes = […]

C#PHP AES 256 CBC加密

您好我正在尝试使用PHP和AES 256 CBC模式加密我服务器上的文件/字符串,因为字符串以’\ 0’结尾我可以轻松地从AES添加的填充中删除填充,但是文件我不能,因为其中一些包含空字节。 在发送数据之前,我将其编码为base64字符串。 这是我的C#decrypt函数 internal static byte[] __AES_DECRYPT(byte[] input, string _key, string _iv) { var myRijndael = new RijndaelManaged() { Padding = PaddingMode.Zeros, Mode = CipherMode.CBC, KeySize = 256, BlockSize = 256 }; byte[] key = Encoding.ASCII.GetBytes(_key); byte[] iv = Encoding.ASCII.GetBytes(_iv); var decryptor = myRijndael.CreateDecryptor(key, iv); var sEncrypted = input; var fromEncrypt = […]

这是用MD5加密密码的好方法吗?

我之前从未加密过密码,这是我在这篇文章的帮助下想到的。 这篇文章没有包括盐,所以我不得不自己解决: UTF8Encoding encoder = new UTF8Encoding(); byte[] salt = new byte[8]; new Random().NextBytes(salt); byte[] encodedPassword = encoder.GetBytes(txtPassword.Text); byte[] saltedPassword = new byte[8 + encodedPassword.Length]; System.Buffer.BlockCopy(salt, 0, saltedPassword, 0, 8); System.Buffer.BlockCopy(encodedPassword, 0, saltedPassword, 8, encodedPassword.Length); byte[] encryptedPassword = new MD5CryptoServiceProvider().ComputeHash(saltedPassword); byte[] saltedEncryptedPassword = new byte[8 + encryptedPassword.Length]; System.Buffer.BlockCopy(salt, 0, saltedEncryptedPassword, 0, 8); System.Buffer.BlockCopy(encryptedPassword, 0, saltedEncryptedPassword, […]

从node.js解密.NET中的AES256加密数据 – 如何从密码短语中获取IV和密钥

我有以下代码来加密/解密node.js中的数据,这是有效的: var cipher = crypto.createCipher(‘aes256’, ‘passphrase’); var encrypted = cipher.update(“test”, ‘utf8’, ‘base64’) + cipher.final(‘base64’); var decipher = crypto.createDecipher(‘aes256’, ‘passphrase’); var plain = decipher.update(encrypted, ‘base64’, ‘utf8’) + decipher.final(‘utf8’); 我希望能够在C#/ .NET中做同样的事情,以便我可以在两个单独的系统之间共享数据。 但是,我在.NET中看到的代码需要密钥和IV才能进入/解密。 这些是如何从node.js加密库中的密码中派生出来的?

C#RSA加密 – > PHP RSA解密

我试图在C#中使用RSA加密AES密钥和IV,并使用phpseclib用PHP解密它们。 我试图解决这个问题大约4个小时,但我总是得到’2495行的解密错误’。 PKCS似乎有问题。 临时私钥 临时公钥 在C#中使用RSA加密后的密文(decrypted =“testkey”,因为我删除了用于测试的aes加密) Cd/RsiVqKnEP2T9oTgnvRuHVKY09VfynLHIlinIGtW4PFrB2kKffIrIqRQKhob6bPIR4efjxhCn43AQ2gE5P/AMG/EDWk9HMJF8XuhdtsWfPmnqxVV4crpA2FZwh4BWdXq4N70ieWbuk+pRJ1dHGhLgFfphp4sVVopn3bPKw2VKI0O+MT4nUCHFac25owoFnMULzuxj60I9Qa/TIlCKwMNcv2r7ili/LvplPZIEnH2p/bR62TAUvty0yo9NTHZm+wlqyIUmA1/GrM0VHjmcnRjFQHp1zQreRspvRsbk= PHP(如果strrev与否,则无变化): public function RSADecryption($key, $iv) { $PrivateKeyFile = RSA_Private; $rsa = new Crypt_RSA(); $rsa->setEncryptionMode(CRYPT_RSA_ENCRYPTION_PKCS1); $rsa->loadKey($PrivateKeyFile); // decrypt key and iv for aes decryption $aes_key = base64_encode($rsa->decrypt(strrev((base64_decode($key))))); $aes_iv = base64_encode($rsa->decrypt(base64_decode($iv))); echo $aes_key; echo “”; echo $aes_iv; } C#加密: public static string RSAEncryption(string aes_key, string aes_iv, string publickey) { […]

Xamarin.android-如何更快地加密/解密图像

我希望用户从图库中选择图像/video,并在我的应用中保护他们的图像。 为此,我加密了这些图像。 图像加密工作正常(我想是这样!)。 8MB图像需要1.5到2秒。 video怎么样? video可能是GB。 所以这需要很多时间。 即使在加密/解密中,我也必须对每个图像执行操作,这可能会导致内存问题。 这个链接帮助我实现了这一目标。 如果你看,ES文件浏览器还提供图像/video的加密和解密。 它只需几秒钟即可完成GB的操作。 那么我能知道这些人使用哪种技术/算法吗? 或者即使我以自己的方式使用,是否有任何技巧可以让它更快? 或者有没有其他方法使用户无法访问文件? 更改MIME类型是否有效? 即使我通过添加更改扩展名或隐藏它。 在文件名之前,用户仍然可以在某些文件资源管理器中查看图像。 实际上对于xamarin ,我没有找到任何与加密解密文件相关的post/博客。 它们提供的只是字符串解决方案。 如果有人指导我解决这个问题,我将非常感激。 编辑 您好,@ Joe Lv,正如我所说的那样,我尝试了加密速度慢但解密速度非常快的方法。 所以我实现了用于加密事物的相同解密技术。 它的工作原理!! 但我想知道这是否有效。 现在我的加密方法如下所示: public void encrypt(string filename) { // Here you read the cleartext. try { File extStore = Environment.GetExternalStoragePublicDirectory(Environment.DirectoryMovies); startTime = System.DateTime.Now.Millisecond; Android.Util.Log.Error(“Encryption Started”, extStore + “/” + […]