我需要实现256位AES加密,但我在网上找到的所有示例都使用"KeyGenerator"生成256位密钥,但我想使用自己的密码.如何创建自己的密钥?我已经尝试将其填充为256位,但后来我得到一个错误,说密钥太长了.我确实安装了无限管辖区补丁,所以那不是问题:)
IE浏览器.KeyGenerator看起来像这样......
// Get the KeyGenerator
KeyGenerator kgen = KeyGenerator.getInstance("AES");
kgen.init(128); // 192 and 256 bits may not be available
// Generate the secret key specs.
SecretKey skey = kgen.generateKey();
byte[] raw = skey.getEncoded();
Run Code Online (Sandbox Code Playgroud)
编辑
我实际上是将密码填充到256个字节,而不是位,这太长了.以下是我现在使用的一些代码,我对此有更多的经验.
byte[] key = null; // TODO
byte[] input = null; // TODO
byte[] output = null;
SecretKeySpec keySpec = null;
keySpec = new SecretKeySpec(key, "AES");
Cipher cipher = Cipher.getInstance("AES/CBC/PKCS7Padding");
cipher.init(Cipher.ENCRYPT_MODE, keySpec);
output = cipher.doFinal(input)
Run Code Online (Sandbox Code Playgroud)
您需要自己做的"TODO"位:-)
我正在研究一些使用pthread和信号量库的代码.该sem_init功能在我的Ubuntu机器上运行正常,但在OS X上该sem_init功能完全没有效果.图书馆有什么问题,或者有不同的方式吗?这是我用来测试的代码.
sem_t sem1;
sem_t sem2;
sem_t sem3;
sem_t sem4;
sem_t sem5;
sem_t sem6;
sem_init(&sem1, 1, 1);
sem_init(&sem2, 1, 2);
sem_init(&sem3, 1, 3);
sem_init(&sem4, 1, 4);
sem_init(&sem5, 1, 5);
sem_init(&sem6, 1, 6);
Run Code Online (Sandbox Code Playgroud)
值似乎是随机数,并且在sem_init调用后它们不会更改.
我被迫在工作中使用VS2008作为我的大部分项目,但每当奇数文本文件需要编辑时我都会使用Vim.
现在我知道有些插件可以让VIM像IDE一样工作,所以我想知道是否有人真的将它用作IDE?
编辑:
对于那些认为你代表大众说Vim不应该用作IDE的人,请考虑IDE功能是vim.org上官方功能请求列表中的头号功能请求.
当用户向我的API发出JSON/XML请求时,如何返回800,404等错误?
我试过了
error 404, {:error => "ERror".to_json }
Run Code Online (Sandbox Code Playgroud)
没有成功.
此外,我试图放一个"respond_to"但它也不起作用(它复制了respond_to并给出了错误).
谢谢
我使用以下代码...
-(id) initWithVariableName:(NSString*)variableName withComparisonValue:(NSString*)comparisonValue {
// super init
self = [super init];
if (!self) return nil;
// set instance variables
self.mustExist = NO;
self.reverseCondition = NO;
self.regularExpression = NO;
self.variableName = variableName; // generates warning
self.comparisonValue = comparisonValue; // generates warning
return self;
}
Run Code Online (Sandbox Code Playgroud)
这产生了以下两个警告......
处理这些警告是否有共同或公认的惯例?
我知道只是告诉用户他们应该在引用类成员时指定一个实例,但它很烦人.
显然,代码中的绝大多数错误都是空引用异常.是否有任何一般技术可以避免遇到空引用错误?
除非我弄错了,否则我知道在F#这样的语言中,不可能有空值.但这不是问题,我问如何避免C#等语言中的空引用错误.
我正在设置骨干同步机制,并且有点困惑在哪里为模型生成id.
当我创建一个新模型时,主干应该生成并设置id,还是我应该实现一个id生成方法,或者是否存在某种机制,我将数据"输出"到服务器,生成id和返回一个带有id的模型?
如果我正在使用旧版本的Twitter Bootstrap进行长期运行或旧项目,我在哪里可以找到文档?(升级并不总是最简单的选择).