标签: checksum

为什么各种项目的下载都有哈希码或校验和?

从Internet下载各种可执行文件或zip文件时,我从未使用过校验和.我知道它用于检查一致性并增加一些安全性.但是,当您从像Apache或Microsoft这样受人尊敬的项目下载时,它是否有必要.我们中有多少人实际使用校验和或哈希码来验证内容?

仅供参考,如果我偏离了StackOverflow可接受的内容,请告诉我.

checksum hashcode

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

如何在Java中为XML文件创建校验和

我需要在Java中为XML文件创建校验和.基本要求是:

  1. 要素的顺序很重要;
  2. 名称 - 值属性对很重要,但属性的顺序不是;
  3. 忽略所有空格和注释

任何人都可以提供任何提示或示例代码?

谢谢,马克

java xml checksum

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

如何检查下载的R图像以确保它在镜像过程中没有被篡改或损坏?

当我最近将最新版本的R下载到新的MacBook Pro时,位于加州大学伯克利分校的CRAN CRAN的网页上说"检查下载图像的MD5校验和,以确保它没有被篡改或损坏镜像过程."

它说,"例如,在终端应用程序中键入md5 R-2.13.0.pkg以打印R-2.13.0.pkg映像的MD5校验和."

我在2011年6月27日从http://cran.cnr.berkeley.edu/复制的引文中的文字.

checksum r

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

是否有更优雅的方法来检测大型SQL表中的更改而不更改它?

假设你有一个相当大的(对于"大"的本地定义),但相对稳定的表.

现在,我想要对整个表的某些内容(任何类型)进行校验和.

天真的方法可能是遍历整个表,采用每行上每列连接的校验和(比方说,MD5),然后将它们连接起来并取其MD5sum.

从客户端开始,可以通过逐步将列的值附加到MD5求和例程中来逐步优化,逐步改变该值.

原因是,在将来的某个时刻,我们希望重新连接到数据库,并确保没有其他用户可能改变了表:包括INSERT,UPDATE和DELETE.

有没有更好的方法来确定特定表是否发生了任何更改?还是更有效/更快的方式?

更新/澄清:

  • 我们无法/允许对表本身进行任何更改(例如,添加"last-updated-at"列或触发器等)

(这适用于Postgres,如果它有帮助的话.我宁愿避免戳交易期刊或类似的东西,但如果有办法这样做,我不反对这个想法.)

sql postgresql checksum

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

在Clojure中计算GS1校验位的更惯用的方法

我正在尝试计算GS1校验位,并提出以下代码.计算校验位的算法是:

  1. 反转条形码
  2. 丢弃最后一位数(计算的校验位)
  3. 将数字加上第一,第三,第五等数字乘以3,偶数数加1.
  4. 从最接近的十倍或更高的倍数中减去总和

这听起来很简单,但我提出的解决方案似乎有点不雅.它确实有效,但我想知道是否有更优雅的方式来写这个.

(defn abs "(abs n) is the absolute value of n" [n]
  (cond
   (not (number? n)) (throw (IllegalArgumentException.
                 "abs requires a number"))
   (neg? n) (- n)
   :else n))

(defn sum-seq "adds (first number times 3) with (second number)"
  [coll]
  (+ 
   (* (first coll) 3)
   (second coll)))

(defn sum-digit
  [s]
  (reduce +
  (map sum-seq
  (partition 2 2 '(0) 
  (map #(Integer/parseInt %)
  (drop 2 (clojure.string/split (clojure.string/reverse s) #"")))))))

(defn mod-higher10 "Subtracts the sum from nearest …
Run Code Online (Sandbox Code Playgroud)

checksum clojure

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

文件校验和在HTTPS站点中有用吗?

我们被要求在下载页面上提供文件校验和.

无论如何,我们正在开发的门户网站采用HTTPS进行3因素身份验证.

校验和是否添加了任何安全性或者它是无用的?

c# security checksum

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

如何在python中创建文件的校验和

我正在尝试创建文件的校验和,并将校验和保存为相同的文件.所以我监视文件,如果校验和发生变化,那么就做一些事情.

这是校验和

对于test.txt

contents: a
checksum: dd18bf3a8e0a2a3e53e2661c7fb53534
Run Code Online (Sandbox Code Playgroud)

我编辑文件:

contents: aa
checksum: dd18bf3a8e0a2a3e53e2661c7fb53534
Run Code Online (Sandbox Code Playgroud)

这是我的代码:

python -c 'import hashlib;print hashlib.md5("test.txt").hexdigest()'
Run Code Online (Sandbox Code Playgroud)

为什么校验和是一样的?

python checksum

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

计算输入流的校验和

我需要为输入流(或文件)计算校验和,以检查文件内容是否已更改.我有以下代码,虽然我使用相同的流,但每次执行都会生成不同的值.有人可以帮我这么做吗?

public class CreateChecksum {
    public static void main(String args[]) {
        String test = "Hello world";
        ByteArrayInputStream bis = new ByteArrayInputStream(test.getBytes());
        System.out.println("MD5 checksum for file using Java : "    + checkSum(bis));
        System.out.println("MD5 checksum for file using Java : "    + checkSum(bis));
    }
    public static String checkSum(InputStream fis){
        String checksum = null;
        try {
            MessageDigest md = MessageDigest.getInstance("MD5");
            //Using MessageDigest update() method to provide input
            byte[] buffer = new byte[8192];
            int numOfBytesRead;
            while( (numOfBytesRead = fis.read(buffer)) > 0){
                md.update(buffer, 0, numOfBytesRead); …
Run Code Online (Sandbox Code Playgroud)

java checksum md5

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

为什么将ICMP校验和移位16位

我正在努力理解为什么ICMP校验和总数(在补码之前)是此代码行中的总数+向右移16位:

checksum bs = let bs' = (if (BL.length bs) `mod` 2 == 0 then bs else BL.snoc bs 0)
                  ws = runGet listOfWord16 bs'
                  total = sum (map fromIntegral ws) :: Word32
              in complement (fromIntegral total + fromIntegral (total `shiftR` 16))
Run Code Online (Sandbox Code Playgroud)

RFC 792关于计算校验和的说法是这样的:

校验和

校验和是ICMP消息以ICMP类型开头的补码和的16位补码。为了计算校验和,校验和字段应为零。如果总长度为奇数,则用零的一个八位位组填充接收到的数据以计算校验和。将来可能会替换此校验和。

我理解为什么bs'要按照“如果总长度为奇数,则将接收到的数据填充一个零的八位位组以计算校验和”的要求进行计算。

我也可以理解将本行代码中完成的16位字的总和 total = sum (map fromIntegral ws) :: Word32

我只是不知道为什么在这行代码中:

complement (fromIntegral total + fromIntegral (total `shiftR` 16))
Run Code Online (Sandbox Code Playgroud)

+ fromIntegral (total `shiftR` 16)应该包括在所有。

注意:我已经用wireshark验证了校验和是正确的,仅当我total …

haskell checksum icmp

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

将校验和算法从Python转换为C.

在一些本田车辆中存在用于网络的校验和算法,其针对所提供的数据计算0-15之间的整数.我正在尝试将其转换为普通C,但我认为我遗漏了一些东西,因为我在实现中得到了不同的结果.

虽然Python算法为"ABC"计算6,但我的计算-10,这很奇怪.我是否因为移位而弄乱了什么?

Python算法:

def can_cksum(mm):
  s = 0

  for c in mm:
    c = ord(c)
    s += (c>>4)
    s += c & 0xF

  s = 8-s
  s %= 0x10

  return s
Run Code Online (Sandbox Code Playgroud)

我的版本,在C:

int can_cksum(unsigned char * data, unsigned int len) {
    int result = 0;

    for (int i = 0; i < len; i++) {
        result += data[i] >> 4;
        result += data[i] & 0xF;
    }

    result = 8 - result;
    result %= 0x10;

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

c checksum

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

标签 统计

checksum ×10

java ×2

c ×1

c# ×1

clojure ×1

hashcode ×1

haskell ×1

icmp ×1

md5 ×1

postgresql ×1

python ×1

r ×1

security ×1

sql ×1

xml ×1