小编Ale*_*lds的帖子

SHA1哈希是否均匀分布?

我在Python中有一个字符串。我用计算该字符串的SHA1哈希hashlib。我将其转换为十六进制表示形式,并使用最后16个字符作为标识符:

hash_str = "foobarbaz?????????????..."
hash_obj = hashlib.sha1(hash_str, encode('utf-8'))
hash_id  = hash_obj.hexdigest()[:16]
Run Code Online (Sandbox Code Playgroud)

我的目标是提供一个合理的长度并且不太可能hash_id针对不同的hash_str输入产生相同的值的标识符。

如果SHA1发生碰撞的概率为1 /(2 ^ 160)或1 /(16 ^ 40),则如果我采用十六进制表示的最后十六个字符,则发生碰撞的概率仅为1 /(16 ^ 16)?还是字节(或其等效的十六进制)分布不均?

hash sha1 probability

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

为什么HMAC SHA-1会使用相同的输入返回不同的摘要?

我正在尝试为Amazon S3 Web服务构建一个可用的加密签名,使用Objective C编写连接库.

我已经遇到了使用ObjC代码的HMAC SHA-1摘要问题,因此我将其放在一边,查看现有的,正在运行的Perl代码,以尝试解决摘要创建问题.

我正在测试包的s3ls命令中的HMAC SHA-1摘要输出Net::Amazon::S3,并将其与_encode我提取并放入其自己的perl脚本的子例程进行比较:

#!/usr/bin/perl -w                                                                                                                                                                                    

use MIME::Base64 qw(encode_base64);
use Digest::HMAC_SHA1;
use String::Escape qw( printable unprintable );

sub _ascii_to_hex {
    (my $str = shift) =~ s/(.|\n)/sprintf("%02lx", ord $1)/eg;
    return $str;
}

sub _encode {
    my ( $aws_secret_access_key, $str ) = @_;
    print "secret key hex: "._ascii_to_hex($aws_secret_access_key)."\n";
    my $hmac = Digest::HMAC_SHA1->new($aws_secret_access_key);
    $hmac->add($str);
    my $digest = $hmac->digest;
    print "cleartext hex: "._ascii_to_hex($str)."\n";
    print "digest hex: "._ascii_to_hex($digest)."\n";
    my $b64 = encode_base64( $digest, '' ); …
Run Code Online (Sandbox Code Playgroud)

encryption perl sha1 digest hmac

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

Java相当于Cocoa NSNotification?

我正在使用SWT小部件编写Java应用程序.我想在某个事件发生时更新某些小部件的状态(例如,更新数据模型的状态).

Java中是否存在类似于Cocoa的NSNotificationCenter的东西,我可以在其中注册一个对象来监听通知事件并对它们做出响应,以及让其他对象"触发"通知?

java events cocoa notifications objective-c

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

旋转iPhone时重置自定义UITableViewCell高度

我正在重载委托方法-tableView:heightForRowAtIndexPath:并使用-sizeWithFont:constrainedToSize:以编程方式设置单元格的高度,基于该单元格中的文本:

- (CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath {
  switch (indexPath.section) {
    case(kAboutViewOverviewSection): {
      switch (indexPath.row) {
        case(kAboutViewOverviewSectionRow): {
          NSString *text = NSLocalizedString(@"kAboutViewOverviewSectionFieldText", @"");
          CGSize s = [text sizeWithFont:[UIFont systemFontOfSize:14] constrainedToSize:CGSizeMake(280, 500)];
          return s.height + 13;
        }
        default: {
          break;
        }
      }
      break;
    }
    default: {
      break;
    }
  }
  return 44.0;
}
Run Code Online (Sandbox Code Playgroud)

这在第一次绘制表时有效.但是,当我更改设备的方向时,从纵向到横向,单元格高度不会改变.

我尝试-shouldAutorotateToInterfaceOrientation:在表视图控制器中覆盖该方法:

- (BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  [self.tableView reloadData];
  return YES;
}
Run Code Online (Sandbox Code Playgroud)

这应该重新加载表数据并且(可能)重绘表格单元格视图.但这没有任何影响.

当设备旋转时,有没有办法强制单元格以新的高度重绘?

编辑:我尝试了以下,没有效果:

- (void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
  [self.tableView reloadData];
}
Run Code Online (Sandbox Code Playgroud)

以下是纵向应用程序的外观: …

iphone uitableview

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

我可以在应用程序运行时以编程方式翻转Info.plist值吗?

我有兴趣在我的应用程序中使用SBUsesNetworkUIRequiresPersistentWiFi键; 但是,我想只在使用某组视图控制器时启用它们.有没有办法在应用程序运行时以编程方式翻转这些键值?

iphone info.plist reachability

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

Greasemonkey,Chrome和unsafeWindow.foo()

我有以下锚标记,其中包含动态生成arg1,...,arg5的JavaScript函数参数,该参数foo()在网站端运行.整个页面中有几个锚标记,具有唯一id值和argN值:

<a href="#" id="foo1234567890" onclick="javascript:foo(arg1,arg2,arg3,arg4,arg5);return false;" target="_self" title="foobarbaz"> blah </a>
Run Code Online (Sandbox Code Playgroud)

我想foo()通过循环遍历此元素的所有匹配,搜索参数,并将这些参数传递给Greasemonkey的unsafeWindow.function(args)调用,以编程方式触发函数.

这是我到目前为止写的Greasemonkey脚本:

function removeAllProperties() {
    var xpath = "//A[@title='foobarbaz']";
    var actionNodes = document.evaluate(
                                    xpath,
                                    document,
                                    null,
                                    XPathResult.ORDERED_NODE_SNAPSHOT_TYPE,
                                    null
                                    );
    var total = actionNodes.snapshotLength;

    for (var i=0; i < total; i++) {
        var candidate = actionNodes.snapshotItem(i);
        //alert(candidate.nodeName);                                                                                                                                                                                                                                                      
        if (candidate.nodeName === "A") {
            var onclick_value = candidate.getAttribute('onclick');
            var needle = /javascript:foo\((.*)\);return false\;/;
            onclick_value.match(needle);
            //alert(onclick_value);                                                                                                                                                                                                                                                       
            //alert(RegExp.$1);                                                                                                                                                                                                                                                           
            var script_args = RegExp.$1;
            if …
Run Code Online (Sandbox Code Playgroud)

javascript greasemonkey google-chrome google-chrome-extension

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

为什么我不能删除向量的最后一个元素

我有由几个元素组成的stl向量.我需要迭代这个向量并删除符合某些条件的元素.所以我写了这段代码

for (int j = imageDataVector.size()-1; j >= 0; j--) {
    if(imageDataVector[i] < threshold)
        imageDataVector.erase(imageDataVector.end() - j);
}
Run Code Online (Sandbox Code Playgroud)

此代码几乎适用于所有情况,但是如果向量的所有元素都符合条件,则会出现错误:

vector erase iterator outside the range
Run Code Online (Sandbox Code Playgroud)

如果我在向量中只剩下一个元素,则会发生此错误.我做错了什么?

c++ iterator stl vector

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

使用Python位串测量Huffman编码的效率

我有以下字符串,需要霍夫曼编码并将其有效地存储到位数组中:

>>> print sequence
GTCAGGACAAGAAAGACAANTCCAATTNACATTATG|
Run Code Online (Sandbox Code Playgroud)

中的符号频率为sequence

>>> print freqTuples
[(0.40540540540540543, 'A'), (0.1891891891891892, 'T'), (0.16216216216216217, 'C'), (0.16216216216216217, 'G'), (0.05405405405405406, 'N'), (0.02702702702702703, '|')]`
Run Code Online (Sandbox Code Playgroud)

我将其翻译成霍夫曼代码字典:

>>> print codeDict
{'A': '1', 'C': '010', 'G': '001', 'N': '0110', 'T': '000', '|': '0111'}
Run Code Online (Sandbox Code Playgroud)

然后,我使用Python bitstring包将字符串逐个字符地转换为BitArray该类的实例,我称之为bitArray,该实例包含每个用其各自的霍夫曼代码编码的字符的位:

>>> print bitArray.bin
0b001000010100100110101100111100110101101100000100101100000001101010100000010000010111
Run Code Online (Sandbox Code Playgroud)

这是位数组,以字节为单位:

>>> print bitArray.tobytes()
!I\254\363[^D\260^Z\240Ap
Run Code Online (Sandbox Code Playgroud)

我必须使用tobytes()而不是bytes,因为我生成的位数组不能平均分为8位段。

当我计算表示的存储效率BitArray(位数组和输入字符串的大小之比)时,与未对输入字符串进行未编码的情况相比,我得到的性能更差:

>>> sys.getsizeof(bitArray.tobytes()) / float(len(sequence))
1.2972972973
Run Code Online (Sandbox Code Playgroud)

我是否正确测量存储效率?(如果我对更长的输入字符串进行编码,则该比率会提高,但似乎接近0.28的渐近极限。我想确认这是否是正确的度量方法。)

编辑

以下两种方法得出不同的答案:

>>> print len(bitArray.tobytes()) / float(len(mergedSequence))
0.297297297297

>>> print bitArray.len …
Run Code Online (Sandbox Code Playgroud)

python compression bitstring huffman-code bitarray

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

在C中访问大文件

我需要使用C访问大于2gb的文件.在程序的一次运行期间,将从文件中读取可变数量的字节并保存下一个位置的位置.在程序的下一次运行期间,读取文件位置并从该位置开始读取多个字节.

复杂的是偶尔可以通过将文件复制到新文件来"压缩"文件,减少已经读取的任何字节(我认为复制是唯一的方法).以这种方式删除的字节数也将被保存.

我需要知道文件从原始开始的当前位置,以便与另一个文件同步.这应该很简单,因为它只是(current_offset + deleted_bytes).

不容易的原因是fseek只使用long int索引将文件限制为2gb,而fsetpos使用fpos_t结构作为位置索引,这不是数字,不能来回转换为1.我不知道如何使用long long int索引进行文件定位,这将是理想的解决方案.

我该怎么办?

c windows visual-studio

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

试图比较两个发行版

我在互联网上找到了这个代码,它将正态分布与不同的学生分布进行比较:

x <- seq(-4, 4, length=100)
hx <- dnorm(x)

degf <- c(1, 3, 8, 30)
colors <- c("red", "blue", "darkgreen", "gold", "black")
labels <- c("df=1", "df=3", "df=8", "df=30", "normal")

plot(x, hx, type="l", lty=2, xlab="x value",
  ylab="Density", main="Comparison of t Distributions")

for (i in 1:4){
  lines(x, dt(x,degf[i]), lwd=2, col=colors[i])
}
Run Code Online (Sandbox Code Playgroud)

我想适应我的情况,我希望将我的数据与正态分布进行比较.这是我的数据:

library(quantmod)
getSymbols("^NDX",src="yahoo", from='1997-6-01', to='2012-6-01')
daily<- allReturns(NDX) [,c('daily')]
dailySerieTemporel<-ts(data=daily)
ss<-na.omit(dailySerieTemporel)
Run Code Online (Sandbox Code Playgroud)

目标是看我的数据是否正常......有人可以帮我解决这个问题吗?非常感谢,我真的很感激!

statistics finance r

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