ПРЕДИСЛОВИЕ: Я давно не писал блог. Я чувствую себя таким занятым в прошлом году, и у меня есть бесконечная работа. Я считаю, что многие офисные работники будут чувствовать себя так. Недавно я выполнил операцию по написанию карт на NFC и мне нужно было рассчитать контрольный бит. Вообще говоря, большинство контрольных битов получают при работе XOR первых нескольких байтов.
Теперь позвольте мне поговорить о сценариях, которые я использую:
Напишите 16-байтовые данные в карту процессора (например, трафик), а последний байт-это код проверки-первый пятнадцать байт XOR.
Я начал искать некоторые алгоритмы, написанные другими в Интернете, и обнаружил, что результат расчета был неправильным, или письмо было слишком сложным, поэтому я сам написал один, который чувствовал, что это относительно просто. Теперь я поделюсь этим с вами, я надеюсь общаться с вами вместе.
РАЗДЕЛ 1: Что такое операция XOR (в основном выдержка из энциклопедии Baidu, можно пропустить знакомые детские ботинки)
определение:
Эксклюзив, английский является эксклюзивным или сокращенным как XOR
XOR - математический оператор. Это применяется к логическим операциям. Математический символ XOR - «», а компьютерный символ - «XOR». Алгоритм:
ab = (ÂA∧B) ∨ (a∧O)
Если значения A и B не совпадают, результат XOR составляет 1. Если значения A и B одинаковы, результат XOR составляет 0.
Эксклюзивный или также называется полуаддицией. Его алгоритм эквивалентен бинарному добавлению без переноски: в двоичном языке 1 используется для представления истины, а 0 - ложь, то алгоритм исключительного или: 00 = 0, 10 = 1, 01 = 1, 11 = 0 (оба имеют 0, разные - 1). Эти законы такие же, как и дополнение, но не носят.
XOR называют Xor, EOR и EX-OR
В программе есть три типа операторов: xor, xor и.
Как использовать его следующим образом
z = xy
z = xxory
Правила работы:
1.AA = 0
2.AB = BA
3.ABC = a (bc) = (ab) c;
4.d = ABC может вывести A = DBC.
5.Aba = b.
6. Если x - двоичный номер 0101, Y - двоичное число 1011
Тогда XY = 1110
Только когда два сравнения различны, результат - 1, в противном случае результат равен 0
То есть «Когда два входа одинаковы, они 0, а когда они разные, они 1»!
Логика:
Логическое выражение: f = ab'a'b ((ab'a'b) '= ab⊙a'b', ⊙ - та же или "операция)
Таблица истины логики XOR показана на рисунке 1
Логические символы показаны на рисунке 2. Отношение между логикой XOR: когда AB отличается, выход P = 1; Когда AB одинаково, выход P = 0. "" Это символ операции XOR, а логика XOR также является комбинацией с или нелогичным, и его логическое выражение:
P = ab
Из рисунка 1 правила операции XOR
00 = 0,01 = 1
10 = 1,11 = 0
Ментальная формула: 0 то же самое, 1 то же самое
Фактически, XOR определяется на английском языке как (ISONE), но, не так, то есть, когда только один правда (1), возьмите истинность (1).
эффект:
Он обычно используется в компьютерах. Логический символ XOR обычно используется с XOR, что также полезно:
True или false = true
Неверно истинное = верно
False = false
True = false
Или:
TrueFalse = true
Falsetrue = true
Falsefalse = false
TrueTrue = false
Некоторые компьютерные языки используют 1 для представления True и 0 для представления false, поэтому два байта являются исключительными или следующими
Ниже приведены два двоичных значения для расчета XOR:
В действительности используются десятичные значения, поэтому давайте посмотрим, как два десятичных значения рассчитываются для XOR:
52 =?
1. Перед выполнением расчета XOR все значения будут преобразованы в двоичный файл:
5 и 2 преобразованы в двоичный файл: 0101 и 0010 соответственно
2. Преобразовать результат с 0111 в десятичное значение: 7
3. SO 52 = 7
Умное использование:
В отличие от других языков, XOR в C и C ++ не использует XOR, но «^», а метод печати - SHIFT+6. (И «^» на других языках обычно означает умножение)
Если вам нужно обмениваться значениями двух переменных, в дополнение к обычно используемым заимствованным промежуточным переменным для обмена, вы также можете использовать XOR и использовать только две переменные для обмена, такие как:
a = a^b; b = b^a; a = a^b;
Подробное объяснение:
a1 = a^bb = a1^ba = a1^b = a1^(a1^b) = a1^a1^b = b
Уведомление:
a=a^b^(b=a);//此类形式是不正确的UB行为,在不同编译器中会有不同的结果,切勿使用
Это завершает обмен A и B.
Подводя итог: та же переменная и другая переменная и ее значение XOR равны себе.
Используйте вариант: он может использоваться в определенной ссылке или более ссылках алгоритма шифрования, что делает алгоритм более сложным, менее простым для взлома и имеет более высокую безопасность. [1]
Раздел 2: Реализация на языке Java:
Приватная статическая строка xor (string strhex_x, string strhex_y) {// преобразовать x и y в бинальную форму string notherbinary = integer.tobinarystring (integer.valueof (strhex_x, 16)); String thisbinary = integer.tobinaryString (integer.valueof (strhex_y, 16); двоичный, в противном случае левый ноль дополняется if (inotherbinary.length ()! = 8) {for (int i = notherbinary.length (); i <8; i ++) {notherbinary = "0"+notherbinary;}} if (thisbinary.length ()! "0"+thisBinary;}} // Операция XOR для (int i = 0; i <inomeBinary.length (); i ++) {// Если число той же позиции одинаково, добавьте 0, в противном случае добавьте 1 if (thisBinary.Charat (i) == notherbinary.charat (i)) result+= "0"; else {result+= "1";}} log.e ("code", result); return integer.tohexstring (integer.parseint (result, 2));}Примечание. Приведенный выше метод представляет собой операцию XOR между одним байтом шестнадцатеричной строки, такой как операция XOR для пятнадцати-байтовой шестнадцатеричной строки:
1312F70F900168D900007DF57B4884
Сплит первой: 13 12 F7 0F 90 01 68 D9 00 00 7d F5 7b 48 84
13 XOR 12-> 1
1 XOR F7-> F6
f6 xor 0f-> f9
....
62 XOR 84-> E6
То есть полученный код проверки с одним байтовым: E6
Кроме того, я добавил простой метод звонка некоторым друзьям только для справки:
public String chectcode_0007 (String para) {string [] datearr = new String [15]; try {datearr [0] = para.substring (0, 2); datearr [1] = para.substring (2, 4); datearr [2] = para.substring (4, 6); datearr [3] = paraString (6); para.substring (8, 10); datearr [5] = para.substring (10, 12); datearr [6] = para.substring (12, 14); datearr [7] = para.substring (14, 16); datearr [8] = para.substring (16, 18); datearr 20); datearr [10] = para.substring (20, 22); datearr [11] = para.substring (22, 24); datearr [12] = para.substring (24, 26); datearr [13] = para.substring (26, 28); datearr [14] = para.substring (28); Обработка exception} string code = ""; for (int i = 0; i <datearr.length-1; i ++) {if (i == 0) {code = xorstring (datearr [i], datearr [i+1]);} elsЗатем вызовите это в основной функции или другом методе:
String Code = fectCode_0007 ("1312F70F900168D900007DF57B4884");Код является полученным контрольным кодом.
Суммировать
Выше приведено все содержание этой статьи о реализации программирования Java примера эксклюзивного кода или работы шестнадцатеричных строк. Я надеюсь, что это будет полезно для всех. Заинтересованные друзья могут продолжать ссылаться на другие связанные темы на этом сайте. Если есть какие -либо недостатки, пожалуйста, оставьте сообщение, чтобы указать это. Спасибо, друзья, за вашу поддержку на этом сайте!