小编Ebb*_*sen的帖子

iPhone中的ZLib无法解压缩数据

我试图在iPhone中使用ZLib解压缩数据,但它总是通过错误"Invalid header Check".

为了压缩数据,我在Java中使用以下内容

实现:Zlib的标准Java实现

Deflator:java.util.zip.Deflater

版本1.45,04/07/06

压缩级别:BEST_COMPRESSION

在iPhone中,以下是解压缩的代码:

- (NSData *)zlibInflate
{
if ([self length] == 0) return self;

unsigned full_length = [self length];
unsigned half_length = [self length] / 2;

NSMutableData *decompressed = [NSMutableData dataWithLength: full_length + half_length];
BOOL done = NO;
int status;

z_stream strm;
strm.next_in = (Bytef *)[self bytes];
strm.avail_in = [self length];
strm.total_out = 0;
strm.zalloc = Z_NULL;
strm.zfree = Z_NULL;

if (inflateInit (&strm) != Z_OK) return nil;

while (!done)
{ …
Run Code Online (Sandbox Code Playgroud)

compression iphone zlib ios

5
推荐指数
1
解决办法
963
查看次数

如何避免std :: vector复制(重新)分配?

我刚刚std::vector在添加新元素时偶然发现了一个问题.

当您尝试向其添加更多元素时,它似乎需要分配更多空间,它通过复制来实现 最后一个元素 它目前拥有的所有元素.这似乎假设向量中的任何元素都是完全有效的,因此副本将始终成功.

在我们的例子中,这不一定是真的.目前我们可能在向量中有一些遗留元素,因为我们选择不删除它们,它们是有效对象,但它们的数据不保证有效行为.对象有防护,但我从未考虑过向复制构造函数添加防护,因为我认为我们永远不会复制无效对象(向量强制):

CopiedClass::CopiedClass(const CopiedClass& other)
    : member(other.member)
{
    member->DoSomething();
}
Run Code Online (Sandbox Code Playgroud)

碰巧当我们完成原始对象并将其留在向量中时,"成员"被置为空,所以当std :: vector尝试复制它时,它会崩溃.

是否可以防止std::vector复制该元素?或者我们是否必须防止可能的无效对象被复制?理想情况下,我们想继续假设只创建了有效的对象,但这似乎意味着我们立即将它们从向量中清除,而不是等待并在稍后阶段进行.

c++ vector c++11

5
推荐指数
1
解决办法
1424
查看次数

在c ++中移动关键字?

我正在编写一个程序,并且有一个名为"move"的函数.但它在我的代码块中突出显示?在c ++中移动一个保留字?如果是这样,它会做什么?

I have it as void move( double t, double u)
Run Code Online (Sandbox Code Playgroud)

c++ keyword reserved

5
推荐指数
1
解决办法
243
查看次数

System.Security.Cryptography.CryptographicException:RSACryptoserviceProvider 中的长度错误

我想RSACryptoServiceProvider在 wp8 项目中使用c#加密和解密数据。我正在创建非对称密钥:

CspParameters parameters = new CspParameters();
parameters.KeyContainerName = "MyContainer";

RSACryptoServiceProvider provider = new RSACryptoServiceProvider(parameters);  
Run Code Online (Sandbox Code Playgroud)

现在我想加密数据。我在做:

CspParameters parameters = new CspParameters();

parameters.KeyContainerName = "MyContainer";
RSACryptoServiceProvider obj = new RSACryptoServiceProvider(parameters);
byte[] a = Generic.RSAEncrypt(ByteConverter.GetBytes(s[0]),
                              obj.ExportParameters(false), false); 

public static byte[] RSAEncrypt(byte[] DataToEncrypt, RSAParameters RSAKeyInfo,
                                bool DoOAEPPadding)
{
    try {
        byte[] encryptedData;
        //Create a new instance of RSACryptoServiceProvider. 
        CspParameters parameters = new CspParameters();
        parameters.KeyContainerName = "TCSContainer";
        using (RSACryptoServiceProvider RSA = new RSACryptoServiceProvider(parameters))
        {
            //Import the RSA Key information. This only …
Run Code Online (Sandbox Code Playgroud)

c# encryption rsa windows-phone-8

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

sha256_crypt.encrypt 总是返回另一个哈希

我正在使用python和flask开发一个webapp。它有一个用户系统,当然还有一个注册表。我正在使用 passlib.hash.sha256 来加密想要注册的用户的密码。这是我在做什么:

from passlib.hash import sha256_crypt as sha256
[...]
if request.method == "POST" and form.validate():
    username = request.form['username']
    password = request.form['password']
    confirm_password = request.form['confirm_password'] 
    email = request.form['email']

    password = sha256.encrypt(password) #Encryption.



    c, conn = connection('accounts') #Connection to the database


    x = c.execute("SELECT * FROM accounts  WHERE username = '%s' OR email = '%s'" %(thwart(username), thwart(email)))

    if x:
        flash("We are very sorry, but this Username/Email-address is already taken. Please try again")
    else:
        c.execute('INSERT INTO accounts VALUES ("%s", "%s", "%s")' %(thwart(username), …
Run Code Online (Sandbox Code Playgroud)

python encryption sha256

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

Java密码更新方法

我正在尝试学习 Java 编码并坚持使用 Cipher.update() 方法。它是否具有可以更新的最大数据长度?这是我所说的一个例子(我把“String s”值只是为了加快进程,这个值经过加密和解密过程):

public class AES {
    public static String s = "long string";

    public byte [] encryptAES(byte[] data, byte[] keyPass) throws NoSuchPaddingException, NoSuchAlgorithmException, InvalidKeyException, BadPaddingException, IllegalBlockSizeException, UnsupportedEncodingException {

        Cipher ciph = Cipher.getInstance("AES");

        SecretKeySpec AESkeySpec = new SecretKeySpec(keyPass, "AES");
        ciph.init(ENCRYPT_MODE,AESkeySpec);

        ciph.update(s.getBytes());
        byte[] encryptedData = ciph.doFinal();

        return encryptedData;
    }
}
Run Code Online (Sandbox Code Playgroud)

解密后输出: long string

如果我改变价值

public static String s = "long long long long long long long long long long long string";
Run Code Online (Sandbox Code Playgroud)

解码后的输出将是: g long string

如果在我取出.update()方法并执行加密之后 …

java encryption

0
推荐指数
1
解决办法
7042
查看次数

标签 统计

encryption ×3

c++ ×2

c# ×1

c++11 ×1

compression ×1

ios ×1

iphone ×1

java ×1

keyword ×1

python ×1

reserved ×1

rsa ×1

sha256 ×1

vector ×1

windows-phone-8 ×1

zlib ×1