我有以下CRC函数:
unsigned long Checksummer::crc32 (unsigned long crc, char *buf, unsigned long len)
{
unsigned long crc_table[256];
int i, k;
for (i = 0; i < 256; i++) {
unsigned long c = (unsigned long) i;
for (k = 0; k < 8; k++)
c = c & 1 ? 0xedb88320 ^ (c >&g
我在玩RC4和CRC32,试图模拟一些翻转的攻击,我对CRC32在Java中的行为感到困惑。据我所知,这应该是一个基于多项式计算的确定性结果。然而,我看到的是,无论文本是否真的发生了变化,CRC的变化都是不可预测的。Javadoc只在字节数组上声明update():用指定的字节数组更新CRC-32校验和,对于getValue():返回CRC-32值。这里是否涉及到某种盐或PRF,而我没有对其进行核算(我不这么认为)?
输出:
run:
Ciphertext = [B@34e51b72, and CRC = 232697804
Now ciphertext = [B@34e51b72, and
我是一名java程序员,正在努力学习c++。我有一个工作的CRC32函数,但它从数组中提取字符并计算其CRC32。
我想读取一个文件并计算文件的CRC32。
我应该读取该文件,将其拆分并将所有数据放到数组中,还是有任何简单的方法?
unsigned int crc32(unsigned char *message) {
int i, j;
unsigned int byte, crc;
i = 0;
crc = 0xFFFFFFFF;
while (message[i] != 0) {
byte = message[i]; // Get next byte.
crc = c
crc_table = None
def make_crc_table():
global crc_table
crc_table = [0] * 256
for n in xrange(256):
c = n
for k in xrange(8):
if c & 1:
c = 0xedb88320L ^ (c >> 1)
else:
c = c >> 1
crc_table[n] = c
make_crc_table()
""
我很难将一些C代码转换为Kotlin/Java。C代码是正确的。问题是,Kotlin代码导致了一个不同的CRC16校验和。
这是C代码:
// data_buf is of type uint8_t
uint16_t crc = 0;
for(uint32_t i = 0; i<BUF_SIZE; i++)
{
crc += data_buf[i];
}
这就是我在Kotlin尝试过的,但它不起作用:
// DFUFile is of type ByteArray
var i = 0
var crc: UShort = 0u
while(i < DFUFile.size)
我是perl新手,我想知道为什么没有正确地将参数传递给子例程。另外,输出值是否正确?
use strict;
sub crc16 {
use constant POLY => $_[1];
my $crc = 0;
for my $c ( unpack 'C*', $_[0] ) {
$crc ^= $c;
for my $b ( 0 .. 7 ) {
my $carry = $crc & 1;
$crc >>= 1;
我需要的方法来检查和CRC8。我找到了这段代码,但它不起作用:
- (int)crc8Checksum:(NSString*)dataFrame{
char j;
int crc8 = 0;
int x = 0;
for (int i = 0; i < [dataFrame length]; i++){
x = [dataFrame characterAtIndex:i];
for (int k = 0; k < 8; k++){
j = 1 & (x ^ crc8
我收到了将CRC例程从C转换为java的任务,但我真的很难让CRC与文档中的示例相匹配。这是我的文件:
使用的算法是CCITT-16 (0x1021或0x8408反向),.The余数被初始化为所有1's (0xFFFF)
WORD crc16_lsb(BYTE *pData, WORD length)
{
BYTE i;
WORD data, crc;
crc = 0xFFFF;
if (length == 0)
return 0;
do
{
data = (WORD)
我有计算文本字符串的CRC16 CCITT值的VBA代码,现在我计划在谷歌工作表上使用它,但不知道如何将VBA代码转换为Google Apps脚本。 Function crc_ccitt_ffff(strParam As String) As String
Const CRC_POLY_CCITT As Long = &H1021&
Const CRC_START_CCITT_FFFF As Long = &HFFFF&
Dim crc_tabccitt(0 To 255) As Long, crc As Long, b() As B
我需要的脚本,将计算crc32与相同的输出为Python和C。
我现在使用的是zlib.crc32,但是C语言没有这样的库,我们是基于维基百科自己编写的。但它不会返回相同的值。
这是我们的C脚本代码(从维基百科复制,基于RFC):
unsigned int crc32( unsigned char *message, unsigned int n )
{
//int i, crc;
unsigned int crc;
unsigned int i;
unsigned int byte, c;
const unsigned int g0 = 0xEDB88320,
我必须为我的大学做一些项目,我需要计算CRC32。但我之前几乎没有轮班工作,所以即使我读完理论,它仍然对我来说很难。我找到了一些用于C语言的CRC32 basic算法(不是我的),并尝试为拉撒路(Delphi)重写它。但它不起作用。我不明白,出什么事了。请帮助(*_ _)人
下面是我的代码:
procedure TMyFrame.CRC32_Checksum();
var
P : Pointer;
Size, i : Integer;
CRC, j : LongWord;
B : ^Byte;
flag : Boolean;
begin
AssignFile (f, F
我需要实现以太网帧的错误检查。我如何实现这一点? 我已经阅读了一些文档,以了解如何检查以太网帧是否有效。我尝试实现了wikipedia page上描述的算法(在swift 5.1中): // we run the calculation over all the frame except the CRC itself (last 4 bytes)
var crc : UInt32 = 0xFFFFFFFF
for x in 0..<(packetLength-4) {
let byte = packetBytes[x]
let n
我找到了这段用于CRC16的C#代码,但我需要在F#上使用它:
使用系统;
public class Crc16 {
const ushort polynomial = 0xA001;
ushort[] table = new ushort[256];
public ushort ComputeChecksum(byte[] bytes) {
ushort crc = 0;
for(int i = 0; i < bytes.Length; ++i) {
byte index = (byte)(crc ^ b
我想验证我的ZIP文件有一个正确的CRC-32校验和。
我读到,在一个ZIP文件中,CRC-32数据以字节14到17为单位:
Offset Bytes Description[30]
0 4 Local file header signature = 0x04034b50 (read as a little-endian number)
4 2 Version needed to extract (minimum)
6 2 General purpose bit flag
8 2 Compression method
10