Реклама на сайте English version  DatasheetsDatasheets

KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Новости электроники Новости Литература, электронные книги Литература Документация, даташиты Документация Поиск даташитов (datasheets)Поиск PDF
  От производителей
Новости поставщиков
В мире электроники

  Сборник статей
Электронные книги
FAQ по электронике

  Datasheets
Поиск SMD
Он-лайн справочник

Принципиальные схемы Схемы Каталоги программ, сайтов Каталоги Общение, форум Общение Ваш аккаунтАккаунт
  Каталог схем
Избранные схемы
FAQ по электронике
  Программы
Каталог сайтов
Производители электроники
  Форумы по электронике
Помощь проекту


 
Опции темы
Непрочитано 16.02.2014, 20:10  
Арктур
Почётный гражданин KAZUS.RU
 
Аватар для Арктур
 
Регистрация: 29.10.2012
Сообщений: 3,015
Сказал спасибо: 7
Сказали Спасибо 3,494 раз(а) в 1,783 сообщении(ях)
Арктур на пути к лучшему
По умолчанию Re: Помощь в WinAvr

"avr-libc Reference Manual.

Backwards compatibility macros
#define PRG RDB(addr) pgm read byte(addr)"


Это для совместимости со старой версией avr-libc.

Используется для чтения байта из памяти программ.
http://lobot.ucoz.ru/publ/mikrokontr...lerov/3-1-0-10
Реклама:
Арктур вне форума  
Непрочитано 17.09.2014, 17:20  
AGAT0365
Прописка
 
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
AGAT0365 на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Доброго времени суток,помогите с кодом. Есть две функции,одна шифратор и дешифратор
Цитата:
#define KeeLoq_NLF 0x3A5C742E
#define bit(x,n) (((x)››(n))&1)
#define g5(x,a,b,c,d,e) (bit(x,a)+bit(x,b)*2+bit(x,c)*4+bit(x,d)*8+bit(x,e )*16)

/// шифрование
uint32_t KeeLoq_Encrypt (uint32_t dattta,uint64_t key){ //uint32_t data, uint64_t key
uint32_t x = dattta, r;
for (r = 0; r ‹ 528; r++){
x = (x››1)^((bit(x,0)^bit(x,16)^( uint32_t)bit(key,r&63)^bit(KeeLoq_NLF,g5(x,0,9,20, 26,31)))‹‹31);
}
return x;
}
/// дешифровка
uint32_t KeeLoq_Decrypt ( uint32_t dattta, uint64_t key){
uint32_t x = dattta, r;
for (r = 0; r ‹ 528; r++)
x = (x‹‹1)^bit(x,31)^bit(x,15)^( uint32_t)bit(key,(15-r)&63)^bit(KeeLoq_NLF,g5(x,0,8,19,25,30));
return x;
}
Конечно очень мудрёный код,по крайне мере для меня, так вот на функцию шифратора компилятор ругается, а на дешифратора нет. Вроде код почти одинаковый. Что не так подскажите? А это WinAvr выдаёт ошибку
Цитата:
Make_data.c:26: error: unable to find a register to spill in class 'POINTER_REGS'
Make_data.c:26: error: this is the insn:
(insn 52 50 53 3 Make_data.c:22 (set (reg:SI 24 r24 [63])
(and:SI (subreg:SI (regI 62 [+1 ]) 0)
(const_int 1 [0x1]))) 43 {andsi3} (nil))
Make_data.c:26: confused by earlier errors, bailing out
AGAT0365 вне форума  
Непрочитано 18.09.2014, 08:08  
Bear-ku
Временная регистрация
 
Регистрация: 06.06.2007
Сообщений: 55
Сказал спасибо: 2
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Bear-ku на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Разбейте выражение на несколько последовательных действий и ошибка исчезнет. Например, так:
Цитата:
for (r = 0; r ‹ 528; r++){
uint32_t t;
t = bit(x, 0);
t ^= bit(x, 16);
t ^= (uint32_t) bit(key, r&63);
t ^= bit(KeeLoq_NLF,g5(x, 0, 9, 20, 26, 31));
t ‹‹= 31;
t ^= (x ›› 1);
x = t;
}
А так и задумано:
Цитата:
a != KeeLoq_Decrypt(KeeLoq_Encrypt(a, key), key)
?
Bear-ku вне форума  
Непрочитано 18.09.2014, 10:05  
AGAT0365
Прописка
 
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
AGAT0365 на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Сообщение от Bear-ku Посмотреть сообщение
А так и задумано:
Спасибо, А можете объяснить что, что за выражение
a != KeeLoq_Decrypt(KeeLoq_Encrypt(a, key), key)
AGAT0365 вне форума  
Непрочитано 18.09.2014, 12:19  
Bear-ku
Временная регистрация
 
Регистрация: 06.06.2007
Сообщений: 55
Сказал спасибо: 2
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Bear-ku на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Сначала закодировал переменную a (KeeLoq_Encrypt(a, key)), а полученный результат декодировал с тем же ключом (KeeLoq_Decrypt(KeeLoq_Encrypt(a, key), key)). Результат полученный после декодирования не совпал с начальным значением, т.е. с a.
Bear-ku вне форума  
Непрочитано 19.09.2014, 05:19  
AGAT0365
Прописка
 
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
AGAT0365 на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Да я понял , да и проверил, не совпадает. Тогда в чём логика? По моему что зашифровано то и после дешифровки должно быть одним и тем же, при условии что ключ один.
AGAT0365 вне форума  
Непрочитано 19.09.2014, 07:50  
Bear-ku
Временная регистрация
 
Регистрация: 06.06.2007
Сообщений: 55
Сказал спасибо: 2
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Bear-ku на пути к лучшему
По умолчанию Re: Помощь в WinAvr

это же ВАШ код. Если не ваш, попробуйте найти автора, либо исходный алгоритм шифрования.
Bear-ku вне форума  
Непрочитано 19.09.2014, 10:41  
Boba_spb
Почётный гражданин KAZUS.RU
 
Регистрация: 08.06.2008
Сообщений: 1,394
Сказал спасибо: 4
Сказали Спасибо 183 раз(а) в 167 сообщении(ях)
Boba_spb на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Это код из викпедии https://ru.wikipedia.org/wiki/KeeLoq
Boba_spb вне форума  
Непрочитано 19.09.2014, 11:39  
Bear-ku
Временная регистрация
 
Регистрация: 06.06.2007
Сообщений: 55
Сказал спасибо: 2
Сказали Спасибо 10 раз(а) в 10 сообщении(ях)
Bear-ku на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Ну вот и ответ: g5(x,1,9,20,26,31).
Bear-ku вне форума  
Непрочитано 19.09.2014, 18:13  
AGAT0365
Прописка
 
Регистрация: 17.02.2009
Сообщений: 154
Сказал спасибо: 14
Сказали Спасибо 6 раз(а) в 6 сообщении(ях)
AGAT0365 на пути к лучшему
По умолчанию Re: Помощь в WinAvr

Сообщение от Bear-ku Посмотреть сообщение
Ну вот и ответ: g5(x,1,9,20,26,31).
Что то не могу понять что это.....?
AGAT0365 вне форума  
 

Закладки
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подниму тему WinAVR vs IAR oleg110592 Микроконтроллеры, АЦП, память и т.д 5 24.10.2015 14:06
На WinAVR + AVR Studio c CVAVR Vetal-soft Embedd С 87 03.03.2013 20:31
WinAVR: Cи vs C++ vovan_zh Микроконтроллеры, АЦП, память и т.д 3 08.10.2010 23:06
WinAVR не нравится символ '\' vovan_zh Микроконтроллеры, АЦП, память и т.д 10 10.09.2010 20:48
помогите начинающему по WinAVR umkamaks Микроконтроллеры, АЦП, память и т.д 4 05.05.2010 21:01


Часовой пояс GMT +4, время: 00:46.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot