2011-10-12 12 views
7

क्या जावा में कोई लाइब्रेरी/कोड बाइट्स की धारा के 32-बिट सीआरसी की गणना करने के लिए है जो यूनिक्स में cksum कमांड के अनुरूप है?जावा संगत cksum फ़ंक्शन

उत्तर

5

Jacksum: http://www.jonelo.de/java/jacksum/index.html

cksum   algorithm: POSIX 1003.2 CRC algorithm 
       length:  32 bits 
       type:  crc 
       since:  Jacksum 1.0.0 
       comment:  - under BeOS it is /bin/cksum 
          - under FreeBSD it is /usr/bin/cksum 
          - under HP-UX it is /usr/bin/cksum and 
          /usr/bin/sum -p 
          - under IBM AIX it is /usr/bin/cksum 
          - under Linux it is /usr/bin/cksum 

यह ओपन सोर्स है।

+0

मेरे लिए पूरी तरह से अच्छा काम करता है। शीघ्र जवाब देने के लिए ध्न्यवाद! – Kowshik

+0

@palacsint: क्या कोई जावा/प्रोग्राम है जिसका उपयोग मैं अपने जावा प्रोग्राम में कर सकता हूं, क्योंकि मैं नहीं चाहता कि कोई तीसरी पार्टी उपयोगिता – abi1964

+1

मजेदार तथ्य, jonelo.jacksum.algorithm.Cksum जावा की सीआरसी 32 कक्षा के समान इंटरफ़ेस है लेकिन यह वही देता है परिणाम यूनिक्स cksum के रूप में। –

2

क्या आपने सीआरसी 32 कक्षा की कोशिश की है?

http://download.oracle.com/javase/7/docs/api/java/util/zip/CRC32.html

यह सीआरसी 32 जो gzip का उपयोग करता है।

+3

मैंने कई स्थानों पर ऑनलाइन पढ़ा है कि यूनिक्स कक्सम का सीआरसी -32 एल्गोरिदम gzip के समान नहीं है। मैंने इसका परीक्षण नहीं किया है, लेकिन यह सच होने की संभावना है। 'जैक्ससम' का उपयोग करना (ऊपर देखें) मेरे लिए ठीक काम करता है। – Kowshik

+3

@ कौशिक, मैं सत्यापित कर सकता हूं कि जावा का सीआरसी 32/usr/bin/cksum –

+1

@ कौशिक जैसा नहीं है, कृपया मेरा उत्तर देखें। –

0

कार्लोस रेन्डन का बयान, "मैं सत्यापित कर सकता हूं कि जावा का सीआरसी 32/usr/bin/cksum जैसा नहीं है", गलत है।

जैसा कि पीटर लॉरी ने उल्लेख किया है, आप जावा के सीआरसी 32 का उपयोग सीधे यूनिक्स/लिनक्स cksum के समान चेकसम प्राप्त करने के लिए कर सकते हैं।

यह करने के लिए सही तरीका है:

java.util.zip.CRC32 x = new java.util.zip.CRC32(); 
x.update(bytes); 
StdOut.println("CRC32 (via Java's library)  = " + Long.toHexString(x.getValue())); 

स्रोत: http://introcs.cs.princeton.edu/java/61data/CRC32.java.html

डिफ़ॉल्ट CRC त्रुटि के लिए इस्तेमाल किया बहुपद नेटवर्किंग में जाँच मानक आईएसओ/आईईसी पर आधारित है इस्तेमाल किया सीआरसी 8802-3: 1989।

+0

यह निश्चित रूप से मेरे लिए अलग-अलग परिणाम देता है। वास्तव में, मेरी मशीन (एक मैक) में '/ usr/bin/cksum' और'/usr/bin/crc32' दोनों हैं। 'cksum <(echo -n हैलो)' '3287646509' उत्पन्न करता है, जबकि' crc32 <(echo -n हैलो) '' 3610a686' उत्पन्न करता है, और मैंने यह भी जांच की कि जावा का 'सीआरसी 32' कमांड लाइन के समान मूल्य देता है' crc32' और कमांड लाइन 'cksum' के समान मूल्य नहीं है। –

+0

इसके अलावा इस मैक पर, 'cksum -o 3 <(echo -n हैलो)' '907060870' उत्पन्न करता है जो' 3610a686' जैसा ही होता है। इसलिए 'cksum -o 3' जावा के' सीआरसी 32' से मेल खाता है। लेकिन यह इस मशीन पर '/ usr/bin/cksum' के लिए डिफ़ॉल्ट एल्गोरिदम नहीं है। –

+0

डिफ़ॉल्ट एल्गोरिदम 32-बिट नहीं है। अधिक जानकारी के लिए cksum मैन पेज पढ़ें –

संबंधित मुद्दे