标签: encryption-symmetric

Perl中使用对称加密的安全不可篡改的URL组件?

好吧,我可能只是一个糟糕的星期一,但我有以下需要,我看到很多部分解决方案,但我确定我不是第一个需要这个的人,所以我想知道我是否我错过了显而易见的事.

$ client有50到500字节的二进制数据,必须插入到URL的中间并往返客户的浏览器.由于它是URL的一部分,因此我们反对GET URL的1K"理论"限制.此外,$ client不希望他们的客户解码数据,或在没有检测的情况下篡改数据.$ client也不希望在服务器端存储任何东西,所以这必须是完全独立的.在编码和解码中必须是Perl代码,并且速度快.

我认为最后一步可能是base64.但是最有意义的加密和散列步骤是什么?

perl hash encryption-symmetric

10
推荐指数
1
解决办法
1100
查看次数

使用AES + CTR的PyCrypto问题

我正在编写一段代码来使用对称加密来加密文本.但它没有以正确的结果回归......

from Crypto.Cipher import AES
import os

crypto = AES.new(os.urandom(32), AES.MODE_CTR, counter = lambda : os.urandom(16))
encrypted = crypto.encrypt("aaaaaaaaaaaaaaaa")
print crypto.decrypt(encrypted)
Run Code Online (Sandbox Code Playgroud)

这里,解密的文本与原始文本不同.

我对密码学的了解并不多,所以请耐心等待.我理解CTR模式需要一个"计数器"功能来每次提供一个随机计数器,但为什么当我的密钥是32字节时它需要它是16个字节并且它坚持我的消息也是16字节的倍数?这是正常的吗?

我猜它没有回到原始消息,因为计数器在加密和解密之间发生了变化.但那么,它究竟应该在理论上如何运作呢?我究竟做错了什么?无论如何,我被迫回到欧洲央行,直到我弄明白:(

python cryptography aes encryption-symmetric pycrypto

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

Android,PHP和node.js之间的加密和解密

我正在尝试在Android上加密Java中的字符串,然后使用PHP和/或node.js对其进行解密

我已经尝试了http://www.androidsnippets.com/encrypt-decrypt-between-android-and-php,但只返回返回的十六进制字符串的前半部分.

我希望加密类型是带有128位密钥的AES(如果可能的话,更高).

加密密钥也需要是可配置的,所以我的问题可能与我填充字符串的方式有关.

Java的

String.format("%1$-" + n + "s", s)
Run Code Online (Sandbox Code Playgroud)

PHP

$key = str_pad($key,16);
Run Code Online (Sandbox Code Playgroud)

完整的Java代码:

    package com.giggsey.test;


    import java.security.NoSuchAlgorithmException;

    import javax.crypto.Cipher;
    import javax.crypto.NoSuchPaddingException;
    import javax.crypto.spec.IvParameterSpec;
    import javax.crypto.spec.SecretKeySpec;

    import android.util.Log;


    public class SimpleCrypto {

            private String iv = "fedcba9876543210";//Dummy iv (CHANGE IT!)
            private IvParameterSpec ivspec;
            private SecretKeySpec keyspec;
            private Cipher cipher;

            private String SecretKey = "0123456789abcdef";//Dummy secretKey (CHANGE IT!)

            public void doKey(String key)
            {
                    ivspec = new IvParameterSpec(iv.getBytes());

                    key = padRight(key,16);

                    Log.d("hi",key);

                    keyspec = new SecretKeySpec(key.getBytes(), "AES");

                    try …
Run Code Online (Sandbox Code Playgroud)

php java android encryption-symmetric node.js

10
推荐指数
1
解决办法
4069
查看次数

使用密码加密.INI文件字符串的简单代码

我正在寻找比ROT13更复杂的东西,但它不需要一个库(甚至不是一个单元,只是功能下降).

我想用用户提供的密码对称地加密/解密给定的字符串.但是,结果必须是一个字符串,在某种意义上我必须能够将它存储在.INI文件中.

有没有人有这么简单的功能(delphi XE2)?谷歌今天不是我的朋友.

提前致谢


[更新]/[赏金]只是为了说清楚(如果它不是最初的aplogies),我不想要哈希.我有一个列表框,用户可以在其中添加/修改/删除条目.我希望在程序关闭时将它们存储在.INI文件中,并在它再次启动时重新加载.任何查看.INI文件的人(例如,在记事本中打开它)都不应该读取这些字符串.

我想我可以将组件流式传输为二进制文件,但为了减轻思想,我宁愿使用用户提供的密码加密字符串.出于此应用程序的目的,.INI文件节名称或键值是否是人类可读的并不重要,我只想加密数据,在存储到磁盘时给我一些列表:

[config]
numEntries=3

[listbox]
0=ywevdyuvewfcyuw
1=edw
2=hr4uifareiuf
Run Code Online (Sandbox Code Playgroud)

delphi encryption-symmetric delphi-xe2

10
推荐指数
4
解决办法
2万
查看次数

.Net中(对称)加密的最佳实践?

加密SQL数据库中的某些敏感或个人身份识别数据(根据PCI,HIPAA或其他适用的合规标准)的"最佳实践"是什么?

这里有很多关于解决方案的个别方面的问题,但我没有看到任何在高层次上讨论该方法的问题.环顾了一段时间后,我想出了以下内容:

  • 使用CryptoAPI和Rijndael
  • 生成IV并将其与加密数据一起存储
  • 使用DPAPI(机器范围)来"保护"对称密钥
  • 将对称密钥存储在注册表或文件或数据库中,拆分密钥并将部件存储在多个位置以提供额外保护
  • 不要解密数据,除非确实需要,即不是从数据库中读取.相反,将密文保存在内存中.

这够了吗?过时了吗?审计,安全吗?鲁莽?

.net c# encryption encryption-symmetric pci-compliance

10
推荐指数
1
解决办法
9716
查看次数

C#AES Rijndael - 检测无效密码

我正在使用Rijndael来加密程序中的一些敏感数据.

当用户输入错误的密码时,大多数时候CryptographicException会抛出一条消息"填充无效且无法删除".

但是,如果概率非常小,CryptStream不会使用错误的密码抛出异常,而是会返回错误解密的流.换句话说,它解密为垃圾.

知道如何检测/防止这种情况吗?我能想到的最简单的方法是在加密时在消息的开头添加一个"幻数",并在解密后检查它是否仍在那里.

但如果有更简单的方法,我很乐意听到它!

c# encryption rijndael encryption-symmetric rijndaelmanaged

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

在EOF抛出异常之前停止解密:填充无效且无法删除

这就是我们拥有的场景:我们有大量的加密文件,大约为千兆字节,如果我们读到它们,我们可以正确解密.当我们读取并检测文件中的某个标志时会出现问题,然后我们停止读取并调用reader.Close(),会发生CryptographicException:"Padding无效且无法删除".被扔了.我有这个小控制台应用程序重现这种行为,测试它只是运行它,它将在你的C:\驱动器中创建一个文件然后按任意键时将逐行读取,并在按'q'时停止.

using System;
using System.IO;
using System.Security.Cryptography;

namespace encryptSample
{
    class Program
    {
        static void Main(string[] args)
        {
            var transform = CreateCryptoTransform(true);
            // first create encrypted file
            using (FileStream destination = new FileStream("c:\\test_enc.txt", FileMode.OpenOrCreate, FileAccess.Write, FileShare.ReadWrite))
            {
                using (CryptoStream cryptoStream = new CryptoStream(destination, transform, CryptoStreamMode.Write))
                {
                    using (StreamWriter source = new StreamWriter(cryptoStream))
                    {
                        for (int i = 0; i < 1000; i++)
                        {
                            source.WriteLine("This is just random text to fill the file and show what happens when I stop reading …
Run Code Online (Sandbox Code Playgroud)

c# encryption aes encryption-symmetric

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

使用Java中的私钥进行加密和解密

在我阅读了有关密码学(对称和非对称)方法的文章之后.很多文章都说私钥用于加密和解密数据.公钥用于加密数据.但是当我尝试用Java开始实现时我不能能够使用私钥来加密和解密数据(我正在使用RSA算法)?如果有可能请给我一个链接.如果它不支持,请回答为什么它不支持?

//加密

Cipher encrypt=Cipher.getInstance("RSA");
encrypt.init(Cipher.ENCRYPT_MODE, privatekey);
byte[] encryptedMessage=encrypt.doFinal(msg.getBytes());
Run Code Online (Sandbox Code Playgroud)

//解密

Cipher decrypt=Cipher.getInstance("RSA");
decrypt.init(Cipher.DECRYPT_MODE, privateKey);
byte[] decryptedMessage=decrypt.doFinal(encryptedMessage);
Run Code Online (Sandbox Code Playgroud)

java cryptography encryption-asymmetric encryption-symmetric

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

使用DPAPI时安全存储可选熵

所以我试图使用DPAPI存储对称密钥.一切都很好,但是如何处理熵呢?这个回答的问题在这里真的没有提供足够的洞察力.这似乎是一个滑坡 - 我可以使用机器商店来存储熵,但是那么是什么阻止了某人也可以使用它?注意:我使用用户范围存储当前密钥.

所以我的问题是 - 使用DPAPI存储熵的最佳方法是什么?

c# entropy dpapi encryption-symmetric

8
推荐指数
1
解决办法
3952
查看次数

AES托管加密值始终以==结尾?

我已经编写了一个由网上几种方法构建的加密例程.我正在测试加密,并注意到每个加密值以"=="结尾?

有谁知道为什么会这样?

这是我正在使用的代码.键是32个char值,IV是16个char值.

private static readonly byte[] key = Encoding.Default.GetBytes(getKey());
    private static readonly byte[] iv = Encoding.Default.GetBytes("$ruVe4E!eM#kupuc");

    /// <summary>
    /// 
    /// </summary>
    /// <param name="val"></param>
    /// <returns></returns>
    public static string Encrypt(string val)
    {
        string result = string.Empty;

        var aes = getEncryptionType();

        using (MemoryStream msEncrypt = new MemoryStream())
        {
            using (ICryptoTransform encryptor = aes.CreateEncryptor(key, iv))
            {
                using(CryptoStream csEncrypt = new CryptoStream(msEncrypt, encryptor, CryptoStreamMode.Write))
                {
                    using(StreamWriter swEncrypt = new StreamWriter(csEncrypt))
                    {
                        swEncrypt.Write(val);
                    }
                }
            }
            result = Convert.ToBase64String(msEncrypt.ToArray());
        }
        aes.Clear();
        return result; …
Run Code Online (Sandbox Code Playgroud)

c# encryption-symmetric

8
推荐指数
1
解决办法
3431
查看次数