Месяц: Май 2015

SHA256 в Python

SHA256 в Python бывает и стандартный (из hash­lib), и сторонний (из PyCryp­to). Интересно, что при неосторожном использовании они дают разные результаты. Во-первых, SHA256.new() из PyCryp­to сразу после создания имеет digest. Это SHA от пустой строки — широко известное 0xe3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855. Во-вторых, каждый update накладывается в нём на предыдущий, поэтому если digest используется на следующей итерации, то SHA256.new()…

Прочитать статью целиком

Тайна неуязвимости Человека с чемоданчиком

Раскрыт секрет неуязвимости Человека с чемоданчиком (он же G-Man) из первых версий Half-Life. Если заглянуть в исходники, становится ясно, почему в него высаживали целую обойму, а он всё равно живой: SetIm­pactEn­er­gyScale( 0.0f ); // no physics dam­age on the gman

Про offset в методу get у ByteBuffer

Что делает off­set в методе get() у Byte­Buffer? Даже help не вновит ясности. Вроде как смещение — но при попытке сместить и прочитать начинают сыпаться ошибки переполнения буфера. Справка написана не особо понятно, но, к счастью, есть исходник реализации. И, заглянув в него, мы узнаём, что это.… индекс, с которого надо начинать запись в массив!!…

Прочитать статью целиком