Welcome to the Slashdot Beta site -- learn more here. Use the link in the footer or click here to return to the Classic version of Slashdot.

Thank you!

Before you choose to head back to the Classic look of the site, we'd appreciate it if you share your thoughts on the Beta; your feedback is what drives our ongoing development.

Beta is different and we value you taking the time to try it out. Please take a look at the changes we've made in Beta and  learn more about it. Thanks for reading, and for making the site better!

Practical Cryptography

timothy posted more than 10 years ago | from the below-the-subtext dept.

Encryption 140

jpetts writes "If you have an interest in cryptography and spend even a small amount of time looking at the subject on the Internet, you will almost certainly have come across the name Bruce Schneier. His book, Applied Cryptography is widely regarded as the most accessible, and one of the most important books on cryptographic algorithms ever published. Schneier has also published other books, including the less technical Secrets and Lies, an thought-provoking book aimed at getting people to think about the whole of the security landscape, not just cryptography. Now, together with Niels Ferguson, renowned cryptographic expert, and longtime collaborator, another immensely valuable book on security has just appeared." Read on for the rest of jpetts' review.

Schneier is one of the world's foremost experts, not just on cryptography, but also on security. It was as he delved deeper into the security of cryptographic systems that he realised that even though - theoretically at least - cryptography could be made arbitrarily secure, this was one of the more tractable problems in the security puzzle. For this reason, his company, Counterpane repositioned itself as a managed security company, rather than continuing to focus solely on cryptography. This transition was also reflected in his publication of Secrets and Lies (SL), which is very different in tone and focus from Applied Cryptography (AC). So where does Practical Cryptography (PC) fit in, and what does it offer? For me, the answer is that it lies pretty much squarely in the middle of the line reaching from AC to SL.

There is no shortage of products in the cryptography arena, but the vast majority of these attract undisguised scorn from professional cryptographers (at least those who can be bothered to comment on them), and although I am only an amateur in this field, I take it as axiomatic that only peer-reviewed cryptosystems (algorithms, protocols, etc) which have stood the test of time are worth taking even a preliminary peek at. This includes many that are described in AC. However, One of the problems with AC, openly acknowledged by the author, is that it contains essentially no implementation details. Furthermore, the cryptographic field has moved on since its publication, most notably with the adoption of Rijndael as the Advanced Encryption Standard, now a mandated Federal Information Processing Standard.

The source code to AC has been available from pretty much the moment of the book's publication, but one of the problems which faced a would-be cryptographic coder, is how to produce a working cryptographic product based on the routines that one could lay one's hands on. Merely incorporating the source code in a program does not a cryptosystem make: as Schneier points out cryptography is hard. And this is where this new book is invaluable: it tells you in great detail how hard it is, what the hardest parts are, and how you can maximise the return on the effort you may invest in developing cryptographic software.

The book pulls no punches, and does not gloss over any issues relating to implementing cryptographic systems. It deals with all the major components of a practical cryptosystem: the book's major sections are titled Message Security, Key Negotiation, Key Management and Miscellaneous.

Within each of these sections there are several chapters, covering virtually all the salient points imaginable, right down to the fundamentals. For example, the first chapter of the Key Management section deals with the clock. It explains from first principles the need for a clock: "At first glance, [a clock] is a decidedly un-cryptographic primitive, but because the current time is often used in cryptographic systems, we need a reliable clock." It is this sort of attention to particular implementation details that turns PC from a mere recipe book into an invaluable reference and a true cookbook.

Another invaluable feature is the generous use of pseudocode snippets, not only for algorithmic details, such as MACs and block cyphers, but also for higher-level operations like sending and receiving messages.

Ferguson and Schneier are refreshingly frank, too. Where they believe strongly in something, they let you know it. For example, the first paragraph of chapter 23, Standards, contains the statement that "[s]ecurity standards rarely work," while the authors go even further when dealing with X.509 certificates, stating on p.339, "[w]hatever you do, stay away from X.509 certificates. If you need a reason, read [40] and weep". This candour is refreshing, especially when juxtaposed with the weasel words that so many consultants and software vendors seem to rely on. However, this advice is not just given in curmudgeonly fashion, and when the authors discuss the matter of X.509 in a different context, they add, humorously, "[i]f you must use X.509, you have out condolences."

I am tempted to continue to analyse the book at great length, but to save space I will just highlight some further jewels from this work:

  • Implementation issues such as swap files, language-specific memory handling behaviour, caches, etc. are covered in enough detail for you to understand how to do things, and more importantly, how not to do things.
  • Randomness, pseudo-randomness and entropy are covered in enough depth for an implementor to avoid pitfalls, and pseudocode examples are given.
  • Mathematical topics such as prime numbers, groups and large integer arithmetic are described in excellent detail.
  • PKI, its promise, and failure are covered with wit and wisdom.
As you can probably guess from the above description, I believe that the real value of this book lies in the fact that two renowned experts, in both theory and practice, are sharing what works, and more importantly what you should avoid like the plague when working with cryptosystems. This information has until now generally only been available by listening to people like Schneier and Ferguson talk, either one-to-one or at conferences. Even then, the authors point out that even talking to "experts" is not without danger: chapter 25 begins "There is something strange about cryptography: everybody thinks they know enough about it to design and build their own system. We never ask a second-year physics student to design a nuclear power plant. We wouldn't let a trainee nurse who claims to have found a revolutionary method for heart surgery operate on us. Yet people who have read a book or two think they can design their own cryptographic system. Worse still, they are sometimes able to convince management, venture capitalists, and even some customers that their design is the neatest thing since sliced bread." Given this statement, some people might claim that this book is a little hubristic, but I disagree. Paranoia, self evaluation and a healthy scepticism are pre-requisites for assessing, deploying and implementing cryptosystems, but since a sine qua non of reliable crypto is open examination and peer evaluation, I believe that the authors are here simply offering advice, which once you understand more about the issues surrounding crypto, is merely common sense. Schneier and Ferguson have both "earned their bones" in the glaring light of crypto, and this book admirably fills an obvious gap in the literature of the field. There is not, to my knowledge, another book like it on the subject, and had it been published at around the same time as AC, I am sure that it would have been regarded by the NSA as even more dangerous than that book. After all, it is frighteningly easy for the uninformed to take good cryptographic algorithms and protocols, and through ignorance turn them into worse-than-useless crypto products.

Is there anything I didn't like about the book? Frankly, no. Some might complain that it is priced too high (it lists at USD50 for the softcover, and USD70 for the hardcover), but it is printed on acid-free paper, and the density of useful advice is such that it outstrips in value many works which cost half the price or less.

If you are interested in crypto, do yourself a favour: buy this book.

You can purchase Practical Cryptography from bn.com. Slashdot welcomes readers' book reviews -- to see your own review here, read the book review guidelines, then visit the submission page.

cancel ×
This is a preview of your comment

No Comment Title Entered

Anonymous Coward 1 minute ago

No Comment Entered


First Post (-1, Offtopic)

Anonymous Coward | more than 10 years ago | (#5781629)

Worst fp ever!

svefg cbfg (-1, Offtopic)

Anonymous Coward | more than 10 years ago | (#5781630)

svefg cbfg

Re:svefg cbfg (0)

Delirium Tremens (214596) | more than 10 years ago | (#5781709)

svefg cbfg
ROT13[Guvf vf bar bs gur orfg Svefg Cbfgf rire!]

(But your genius will be unappreciated by the Slashdot moderators...)

Re:svefg cbfg (0)

Anonymous Coward | more than 10 years ago | (#5782852)

Ohg vg jnfa'g, jnf vg? Vg jnfa'g rira arneyl SC fgnghf. V zrna, sre pelvat bhg ybhq...

Back, Linux infidels! (-1, Flamebait)

Anonymous Coward | more than 10 years ago | (#5781631)

Bow down and worship the goddess [freebsd.org] of BSD [netbsd.org]!

You Linux [debian.org]-using fags [nylug.org] cannot possibly comprehend the beauty [hope-2000.org] of the one true goddess!

See how a true believer [spilth.org] honors her. Take another look at the proper way to show your devotion [spilth.org] to the divine babe of BSD [openbsd.org]!

There is truly no hope for Linux [suse.com] as long as the lovely Ceren [madchat.org] smiles upon us!

DMCA (5, Insightful)

ih8apple (607271) | more than 10 years ago | (#5781636)

Isn't this review a violation of the DMCA?

I'm not joking...if you take the wording of the law literally?

Re:DMCA (0)

Anonymous Coward | more than 10 years ago | (#5781880)

Isn't this review a violation of the DMCA?

That depends on the judge and the $$$ spent on lawyers.

Re:DMCA (-1, Flamebait)

Anonymous Coward | more than 10 years ago | (#5781944)

I don't see how the review circumvented a copyright device?

Or are you just stupid?

Re:DMCA (1)

ShadowBottle (663193) | more than 10 years ago | (#5782040)

Anon Coward... what? Can't get a login.. afeared are ye? Stupid? Are you illiterate? Have you not seen the DMCA go after people for providing links and information on where to just FIND information on circumnavigating copyrighting, etc? Smoke something besides crack and c0ck plz K thx

Re:DMCA (5, Funny)

ShadowBottle (663193) | more than 10 years ago | (#5782003)

OMG! He is going to get SO busted. Everybody got their lighters ready for a crypto-book burning session? Always remember, security comes after the wants and needs of the power-mad robber barons of the DMCA. NOOOBODY EXPECTS THE DMCA! Our Cheif Weapon is Ignorance, Ignorance and fear.. no no no our TWO cheif weapons are ignorance, fear and a ruthless abandon from the ways of free thought.. no no no our THREE cheif weapons are ignorance, fear, a ruthless abandondon of free though and ignorance again.. yes.. OUR FOUR CHEIF WEAPONS ARE... Fear that which you cannot understand. ( C; And yeah.. /. is going to get nailed for providing information about where to get information on information that involves circuitous ways of securing information. Fscking rat bastards. May they all burn in hell... securely. ( C: ShadowBottle

Re:DMCA (-1, Flamebait)

Anonymous Coward | more than 10 years ago | (#5782065)

You're not joking, eh? Well then you must be a retard. Tell mommy your computer time is over.

Re:DMCA (1)

Tom7 (102298) | more than 10 years ago | (#5782103)

No. What possibly could be a violation? He's *describing* a book that *describes* encryption algorithms. The DMCA bans *devices* that *circumvent* *technologies* that *control access* to *copyrighted works*. Encryption algorithms don't usually control access, and there's no copyrighted work here (aside from the book itself and the review), discussions and pseudocode don't constitute devices, and there's no circumvention.

Do yourself a favor and read the DMCA. http://www4.law.cornell.edu/uscode/17/1201.html
I t is a lot more specific than you think. It doesn't outlaw encryption, and especially not reviews about discussions of encryption.

Re:DMCA (1, Insightful)

Anonymous Coward | more than 10 years ago | (#5782818)

Encryption algorithms don't usually control access

Considering that the only reason to use an encryption algorithm is to control access to a message, I have to say you don't have a clue what you're talking about. Not only that, your humor detection circuit seems to be on the fritz.

Re:DMCA (1)

Sloppy (14984) | more than 10 years ago | (#5782853)

No, the algorithms have significant other uses, besides bypassing tech measures that limit access to copyrighted works, without authorization.

(And so will DeCSS, if people start using CSS as an alternative to Rot-13ing their Usenet postings. ;-)

First post (-1, Offtopic)

Anonymous Coward | more than 10 years ago | (#5781641)

claimed for the NSA.

brought to you by Echelon.

FP (5, Informative)

jpetts (208163) | more than 10 years ago | (#5781645)

It's probably bad form to be FPer to one's own review, but just to let you know there is an oopsie in my review concerning experts. A paragraph got lost (my fault). Schneier and Ferguson start their chapter with the warning about self-proclaimed experts I mention, but they realldo do recommend using experts: just be careful that they really ARE experts, not flim-flam artists.

Re:FP (4, Funny)

B3ryllium (571199) | more than 10 years ago | (#5781721)

Whenever I'm contracted as a security expert, I *always* highly recommend ROT13.

I'm looking into this thing called a "caesar cipher", but it's slow going. I think it needs to be applied 13 times before the data is sufficiently encrypted.

You call yourself an expert? (3, Funny)

Anonymous Coward | more than 10 years ago | (#5782775)

I think it needs to be applied 13 times before the data is sufficiently encrypted.

Applying it 26 times has to be twice as good. Has to be!

Re:FP (-1, Flamebait)

Anonymous Coward | more than 10 years ago | (#5781948)

It's probably bad form to be FPer to one's own review

Its even worse to be a FAILED FPer to one's own review, fool. You suck -- very very badly.

Worst. Whoring. Ever. (1, Funny)

Anonymous Coward | more than 10 years ago | (#5782097)

So you get 3 karma points for submitting an article and THEN in the comments section you add something you "forgot" to include in your review and get modded up +5. How can I get in on this scam?

Re:Worst. Whoring. Ever. (0)

Anonymous Coward | more than 10 years ago | (#5782126)

slurp slurp slurp

speaking of experts (2, Insightful)

Anonymous Coward | more than 10 years ago | (#5782601)

Has Slashdot considered adding a little about the credentials of book reviewers, especially on more technical topics?

I am not in any way passing judgement on "jpetts" here. He, or she, is quite articulate, but could be anywhere from an expert with years of experience to someone who's "read a book or two" and talks a very good game.

Generally I try to assess a writer by coherence and consistency when I don't know the subject material myself. But that only gets one so far - and I usually spot some discrepancies when I do know the subject material.

So the rough outlines of the writer's experience would add (or subtract, as the case may be) a little confidence in their accuracy.

good companion to ac (2, Informative)

Horny Smurf (590916) | more than 10 years ago | (#5781646)

For those of you (including myself) who were expecting an updated version of the Applied Cryptography, this book is NOT it. Based on the pre-publication blurbs here and there, I thought it may be a simple how-to book without too much theory. The book didn't turn out to be that sort of thing either.

This book is, sort of an executive summary of Applied Cryptography (AC), with some updates. It touches upon the insights that Scheneier mentioned in Secret and Lies (like crypto is the easy part and that won't solve security). It mentions some newer material, notably AES related stuff. The description is, in effect, a simplified version of AC. Also, it doesn't try to cover everything, and yes, some explanations about the practical applications are stressed slightly more than in AC.

So if you want to be practical, just go over the essential and latest stuff, this is a good book to read. But I must say that it's not as fun to read as AC. Not as many jokes, and absolutely no crazy stuff (like bio-computing and the significance of dark matters). Oh well, maybe that's what being practical means... But it doesn't give you the feeling of throughness that AC gave. Maybe this comes from my reading AC too much in detail (I actually translated the whole book into Japanese), but I think it is inherent in the book itself. In trying to cover as much ground as possible, the book hurries a lot.

So if you are in a hurry to cover just enough important stuff, get this book. And if you need some explanation on the newer stuff, get this. But I also recommend getting AC as well.

Re:good companion to ac (3, Interesting)

Parsa (525963) | more than 10 years ago | (#5781900)

Good try. I just looked this book up on Amazon.com and this is the only review of the book posted. Great cut and past job.

Re:good companion to ac (0)

Anonymous Coward | more than 10 years ago | (#5782554)

yeah, It's a good book, and I thought other amazon.com shoppers should know what I thought of it.

What they *don't* tell you is (-1, Offtopic)

Yellow Brick Choad (464067) | more than 10 years ago | (#5781650)

that Timothy, Ferguson and Schneier have been in a gay polyamorous triad for the last three and a half years.

thank you, Timothy, for being a slutty faggot shill. truly a Slashdot icon.

I'll tell ya what I think... (4, Funny)

TopShelf (92521) | more than 10 years ago | (#5781652)

Jakb sdf aksvbmk aklsdfj alksjd SjkczLzeq adjskf sdkimz zoikjp ead!

Re:I'll tell ya what I think... (0)

Anonymous Coward | more than 10 years ago | (#5781769)

huh, I think the encription key got lost in mid post. Please resubmit your post with the proper encription key.

Re:I'll tell ya what I think... (1)

AlbanySux (248858) | more than 10 years ago | (#5781854)

What kind of encryption is that?!?! it shoudl either be formatted in blocks of 5 or without spaces.. you are giving away entirely too much information about sentance structure. Its quite apparent you didn't read any of his other books..

Re:I'll tell ya what I think... (0)

Anonymous Coward | more than 10 years ago | (#5782866)

How do you know those spaces indicate spaces in the plain text? They could be a result of the algorithm.

Remember to format the ciphertext, dude (2, Funny)

apankrat (314147) | more than 10 years ago | (#5782219)

> Jakb sdf aksvbmk aklsdfj alksjd SjkczLzeq adjskf sdkimz zoikjp ead!

Jakbs dfaks vbmka klsdf jalks jdSjk czLze qadjs kfsdk imzzo ikjpe adxxx

No (-1, Offtopic)

Anonymous Coward | more than 10 years ago | (#5781654)

If you are interested in crypto, do yourself a favour: buy this book.

No foreigner, I will do myself a favor and buy the book. And don't act like the ritish invented English or something.

But please keep in mind: (4, Funny)

burgburgburg (574866) | more than 10 years ago | (#5781666)

All of this is now officially illegal.
Cryptography supports terrorism.
Reading about implementing cryptography supports terrorism.
Reading reviews about books about implementing cryptography supports terrorism.

Now turn off the computer, stand over there in the corner and we'll be by to pick you up in a little while. And remember, running supports terrorism.

Re:But please keep in mind: (2, Funny)

sapped (208174) | more than 10 years ago | (#5781712)

And remember, running supports terrorism.

No, driving off in your SUV supports terrorism.

Re:But please keep in mind: (1)

warpSpeed (67927) | more than 10 years ago | (#5782620)

No, driving off in your SUV supports terrorism.

What is Jesus is you co-pilot?

Re:But please keep in mind: (2, Funny)

(54)T-Dub (642521) | more than 10 years ago | (#5781726)

Posting a warning to terrorists about their impending arrest is Definitely supporting terrorism.

Re:But please keep in mind: (1)

MAXOMENOS (9802) | more than 10 years ago | (#5782815)

Listing ways that one can support terrorism supports terrorism.

You terrorist!

Practical vs Applied (4, Interesting)

Blaine Hilton (626259) | more than 10 years ago | (#5781675)

I'm glad to see a book on practical cryptography. I like reading about the theory behind how things work, but on the job when I'm working on websites and such I need a reliable way to protect sensitive information and not a bunch of words from theorists.

Hopefully this helps the good guys more then the bad ones though...

Go calculate [webcalc.net] something.

Re:Practical vs Applied (0, Redundant)

CodeMonky (10675) | more than 10 years ago | (#5781740)

Schneir is actually releasing a followup to AC centered around actually using crypto in everyday applications.

He mentioned it in this month Cryptogram.

Re:Practical vs Applied (1)

CodeMonky (10675) | more than 10 years ago | (#5781758)

Here is a link to the actual book:
http://www.counterpane.com/book-practical.h tml

Re:Practical vs Applied (4, Funny)

flynt (248848) | more than 10 years ago | (#5781879)

Schneir is actually releasing a followup to AC centered around actually using crypto in everyday applications. He mentioned it in this month Cryptogram.

In case you hadn't noticed, the Slashdot story you just posted about your comment to is a review of that book.

Re:Practical vs Applied (1)

CodeMonky (10675) | more than 10 years ago | (#5782150)

Woops. Saw Applied Crypto linked in the description and that overroad the title.

Re:Practical vs Applied (5, Insightful)

Anonymous Coward | more than 10 years ago | (#5782023)

I'm sorry, but it is attitudes (and books) like these that give rise to the woeful state of affairs that have existed in "practical cryptography" over the years. Schneier's book, while certainly well-meaning, has promoted the idea that you don't need to understand formal notions of security to be a serious cryptographer. It is hard to overestimate the damage that this idea (and this) book have caused.

Currently, the only way to argue that a cryptosystem is secure is by reducing its security to that a well-studied primitive, like factoring, DLP, even DES! (Of course, it is true that we don't currently know of any explicit intractable problems, but if you are going to use a cryptosystem handed to you on a platter, better to know that its security has an undeniable link to factoring than merely that some group of software engineers somewhere couldn't find a way to break it.)

The point is that there is no "royal road" to cryptography. If you want to be a serious cryptographer, you need to get your hands dirty: understand what a reduction is, learn some complexity theory, learn some computational number theory. Of course, it is fine for end users or businesses to use prepackaged systems if they trust them. The dangerous road is the middle road, where we have "experts" who don't really understand the foundations of the subject.

If you want a laugh, read the description of pseudorandomness in Schneier's book and cf. that of, say, Goldreich's.

Re:Practical vs Applied (2, Interesting)

Crispy Critters (226798) | more than 10 years ago | (#5782456)

I'm sorry, but it is attitudes (and books) like these that give rise to the woeful state of affairs that have existed in "practical cryptography" over the years. Schneier's book, while certainly well-meaning, has promoted the idea that you don't need to understand formal notions of security to be a serious cryptographer. It is hard to overestimate the damage that this idea (and this) book have caused.
I find it astonishing that a book that has only been out a few weeks has caused much damage.

Unless you are thinking of Schneier's first book on cryptography. If you knew what you were talking about, you would know that he wrote Secrets and Lies mainly to explain that crytpographic protocols by themselves don't solve the whole problem. He thought his first book might leave that impression, and he wanted to correct it.

It sounds like you are arguing that this information must be locked up because it is dangerous, and the "serious cryptographer[s]" will then decide who gets access to it and who doesn't. This is disgusting elitism.

Sure, lots of people pass themselves off as experts based on reading a book. The problem is these people and the people who believe them, not the book. Some programmers write buggy code in operating systems. Does this mean that no one should write a book about operating systems to protect us from people who read the book and then write buggy code? Any competent person with training or education knows where the limits to his knowledge are. Anyone who doesn't know this is incompetent, and that can't be blaimed on a book.

Re:Practical vs Applied (1)

eXtro (258933) | more than 10 years ago | (#5783011)

Go read Schneier's web site and learn something. He has a section on how to become a cryptographer. He even gives a self study course in block cypher cryptanalysis [counterpane.com]. He asserts exactly what you do: to become a cryptographer you need to get your hands dirty. He has credentials though. You don't.

These books are like popular science books such as A Brief History of Time, or Cosmos. They're not about making people an expert in a field, they're about helping the layman learn a little bit about a field.

you know, (0, Flamebait)

Cheapoboy (634792) | more than 10 years ago | (#5781682)

Buying this book will probally send out alot of red flags with the D.H.S, what with the patriot act and all...

That's why... (0)

Anonymous Coward | more than 10 years ago | (#5781776)

...I'll be buying it with cash, just like I buy all my other crypto and security books.

Re:you know, (2, Funny)

exhilaration (587191) | more than 10 years ago | (#5782001)

Especially if you're non-white, non-Christian, and of foreign descent.

I too will be paying for this with cash.

Re:you know, (1)

Cheapoboy (634792) | more than 10 years ago | (#5783118)

CHRIST I'M SO FUXX0RD! my great-grandmother was native american! they'll link her to the 60s A.I.M movement and link that to Al Queda! OMFG! on a side note when did the USA become the USSR? I think I missed that memo...

Applied Cryptography (4, Interesting)

msheppard (150231) | more than 10 years ago | (#5781713)

I've always liked the tagline on the back of the Applied Cryptography book:
"The Book the National Security Agency wanted never to be published..."


Older stuff is a must read... (4, Interesting)

(H)elix1 (231155) | more than 10 years ago | (#5781727)

Applied Cryptography is a must read. Few books invoke the proper fear and respect cryptology deserves, with example after example of why your l33t encryption should not be used for anything more valuable than your Slashdot UID. Great examples, solid code, lots of history... If this is even half the book Applied Cryptography was, get your checkbook ready.

Re:Older stuff is a must read... (4, Interesting)

fermion (181285) | more than 10 years ago | (#5782167)

Let me add that though Applied Cryptography is a dauntingly dense book, one can get great benefit from the first hundred pages. The first section of the book develops background material and basic understanding of the issues. To use the authors' physics example, reading a first semester physics book will not teach you physics, but it will teach enough of the science to defend yourself against those who would abuse it.

As the reviewers states, the algorithms have changed over the past several years, but it may be more important to remember that the basic issues have not. People are still trying to pass off obviously flawed protocols as good security measures.

Re:Older stuff is a must read... (1)

ianjk (604032) | more than 10 years ago | (#5782452)

If this is even half the book Applied Cryptography was, get your checkbook ready.

I donno if the checkbook is a good idea. Probably unmarked bills, nonsequential. Mabey have your grandmother go out and buy it.

Too expensive? (4, Insightful)

analog_line (465182) | more than 10 years ago | (#5781768)

Is there anything I didn't like about the book? Frankly, no. Some might complain that it is priced too high (it lists at USD50 for the softcover, and USD70 for the hardcover), but it is printed on acid-free paper, and the density of useful advice is such that it outstrips in value many works which cost half the price or less.

Taking a look at my paperback copy of Applied Cryptography, it's listed at $55, so I hardly consider that any more expensive. And I paid full cover price for this bugger, as opposed to getting it online for a song, like I should have.

I don't think Applied Cryptography had a hardcover edition available, at least of the Second Edition. I certainly may consider picking that thing up. Hopefully it'll be able to stick together for awhile.

And on another note, what isn't printed on acid-free paper these days? Aside from little paperback novels, etc. I thought that was all done away with.

Re:Too expensive? (1)

ssimpson (133662) | more than 10 years ago | (#5781873)

I totally agree - AC2 was well worth the money. FWIW AC2 was available in hardcover - Amazon still sell it at an unpleasant 85USD!

Re:Too expensive? (1)

mttlg (174815) | more than 10 years ago | (#5781881)

Taking a look at my paperback copy of Applied Cryptography, it's listed at $55, so I hardly consider that any more expensive.

Of course, if you compare it to Secrets and Lies, which was sent in duplicate for free to anyone who wanted it, $50-70 (or even $30 for the paperback at Bookpool) is a lot more expensive. But I guess mailing out tons of free books isn't a very good business model these days...

Re:Too expensive? (3, Informative)

eric_ste (446052) | more than 10 years ago | (#5783086)

HAC can be downloaded from here


and many other places.

At the very least... (5, Funny)

Ratphace (667701) | more than 10 years ago | (#5781794)

...you can look forward to your name being recorded with the FBI when you visit the local library to check this book out along with a copy of 'the catcher in the rye'

Re:At the very least... (4, Funny)

jpetts (208163) | more than 10 years ago | (#5781857)

you can look forward to your name being recorded with the FBI when you visit the local library to check this book out along with a copy of 'the catcher in the rye'

Hmmm, maybe the PATRIOT Act is a ploy by authors to make sure we BUY their books (with cash, natch...), instead of checking 'em out from libraries...

Applied Cryptography (5, Funny)

Prof.Phreak (584152) | more than 10 years ago | (#5781812)

His book, Applied Cryptography is widely regarded as the most accessible, and one of the most important books on cryptographic algorithms ever published. "A colleague once told me that the world was full of bad security systems designed by people who read Applied Cryptography" - Bruce Schneier (author of Applied Cryptography). Quote from Secrets & Lies.

Re:Applied Cryptography (1)

Crispy Critters (226798) | more than 10 years ago | (#5782487)

A colleague once told me that the world was full of bad security systems designed by people who read Applied Cryptography" - Bruce Schneier (author of Applied Cryptography). Quote from Secrets & Lies.
I am regularly asked what the average Internet user can do to ensure his security. My first answer is usually "Nothing; you're screwed." - Bruce Schneier

Accessible? (4, Funny)

Bingo Foo (179380) | more than 10 years ago | (#5781871)

Calling the book "accessible" is hardly a compliment for a book on crypography, isnt' it?

I'd rather see a review like: "This book was so impenetrable that teams of scientists in academia and the NSA, working with the online computing grid will take many times the age of the universe to understand the first chapter alone."

Acid-free paper? (3, Funny)

cperciva (102828) | more than 10 years ago | (#5781887)

I'm really glad this is printed on acid-free paper. Because, you know, I'm really likely to be wanting to read this book fifty years from now.

Before you worry about finding a storage medium which will survive for a long time, think about how long the information you're storing will be useful.

Re:Acid-free paper? (1)

Ageless (10680) | more than 10 years ago | (#5782019)

Well, RSA, one of the algorithms presented in this book is now about 20 years old and is still as, if not more, important today than it was 20 years ago. It's no 50 years but I bet we'll still be using RSA in another 10.

Re:Acid-free paper? (1)

hardburn (141468) | more than 10 years ago | (#5782593)

Depends on if Quantum Computers become practical in that timeframe. If they do, RSA (and a lot of other crypto algorithms) become useless.

On a somewhat related note, (1, Insightful)

Anonymous Coward | more than 10 years ago | (#5781904)

I wish that the bignum libraries were a little more straightforward. For example, lots of cryptographic algorithms involve enormous numbers like 1024 bit primes and so forth. But I think libcrypto's bn_* function family is something like 4000 lines of code, and GMP is enormous too. For secure applications, I want to be able to understand and audit the entire library, so I wish they were written for readability instead of speed or whatever they're currently going for. The encryption protocol is useless if there is an overflow on line 8 billion of some underlying library.

Re:On a somewhat related note, (1)

Prof.Phreak (584152) | more than 10 years ago | (#5782163)

Readability of such things often sacrifices speed. Ie: multiplication can be done in like maybe 7 or so lines of C, yet if you use FFT the code (& its speed) increases.

A very good straight forward implementation of most basic algorithms (addition, subtraction, multiplication, division) can be found in BigInteger class in Java source code (one that comes with the SDK). Basically they took word-for-word what's in the Knuth's The Art of Computer Programming Vol. 2, and implemented it in Java.

Re:On a somewhat related note, (0)

Anonymous Coward | more than 10 years ago | (#5782956)

There's no reason obscure code can't be commented properly, though. That would enhance readability without sacrificing speed.

Re:On a somewhat related note, (2, Insightful)

nestler (201193) | more than 10 years ago | (#5782211)

I think it is somewhat unreasonable to expect a big number (BN) library to be completely transparent on a casual reading. Public key (BN) operations in software are very slow. The OpenSSL implementation uses every optimisation it can to speed up its BN operations, just like compiler writers do everything they can to optimize the compiler output.

Did you write your own compiler? No, well have you read every line of gcc? Especially all of the complicated optimizer that makes the binary run faster? Even if you wrote a very dumb BN library that was easier to read, you would still have to worry about an "overflow on line 8 billion of some underlying library" (your compiler in this case).

I agree that OpenSSL's BN library could be better documented internally, but I don't think they should unoptimize it for clarity. People want transparent crypto, meaning they don't like experiencing 100-fold slowdowns when they add crypto to their application. BN optimization is critical in minimizing this slowdown (CRT, Montgomery reduction, sliding windows, Karatsuba, etc.).

Re:On a somewhat related note, (0)

Anonymous Coward | more than 10 years ago | (#5782323)

Thanks for the thoughtful reply, but I still disagree. How value of the optimizations has decreased and will continue to decrease as computers become faster. If you like, you can think about writing obvious code as optimizing in terms of the amount of time it takes a human to understand it. If in 10 years my obvious code takes N time (N being some time so short that it is negligible to humans) it won't matter that the optimized code takes one tenth of N.

Re:On a somewhat related note, (1)

Prof.Phreak (584152) | more than 10 years ago | (#5782407)

If in 10 years...

A lot of things can happen in 10 years...

Also those are not some "temporary" optimizations. There are simply better (but more complex) methods of doing numerical things - so in 10 years, they'll still be faster.

AND, people will always find better uses for CPU power IF it is available (if you don't use it up by bloated code).

Can you say ray-traced true-live-movie-quality DOOM 7? (I'm sure that can bring down to its knees any computer we can come up with in the next 10 years).

Re:On a somewhat related note, (0)

Anonymous Coward | more than 10 years ago | (#5782413)

And by "How value", I mean "The value". Cough. Coffee.

Definitive Crypto Books... (3, Informative)

ssimpson (133662) | more than 10 years ago | (#5781955)

I can't comment on Practical Cryptography as Wiley haven't yet shipped my pre-ordered copy of the book, grumble.....

BUT I can recommed 2 books that any person interested in implementing cryptography should have on their shelf:

  • Handbook of Applied Cryptography [amazon.com] by Menezes et al. Very much like Applied Cryptography 2nd Ed but far more rigorous.
  • Security Engineering [amazon.com] by Ross Andreson - an excellent treatment on why cryptographic and security systems fail in the real world.

I like the joke at the bottom of the X.509 link (4, Funny)

ralico (446325) | more than 10 years ago | (#5782055)

At the bottom of the X.509 certificates link [auckland.ac.nz]

An engineer, a chemist, and a standards designer are stranded on a desert island with absolutely nothing on it. One of them finds a can of spam washed up by the waves.

The engineer says "Taking the strength of the seams into account, we can calculate that bashing it against a rock with a given force will open it up without destroying the contents".

The chemist says "Taking the type of metal the can is made of into account, we can calculate that further immersion in salt water will corrode it enough to allow it to be easily opened after a day".

The standards designer gives the other two a condescending look, gazes into the middle distance, and begins "Assuming we have an electric can opener...".

Re:I like the joke at the bottom of the X.509 link (0)

Anonymous Coward | more than 10 years ago | (#5783177)

Odd, I thought Spam had a pull tab.

I've always thought... (4, Funny)

mattsucks (541950) | more than 10 years ago | (#5782109)

A bit OT, but I've always thought it would be intersting to see a cryptology book released in electronic form .... encrypted. Kind of a "you must be at least this tall to ride this ride" kind of thing.

Thta book isn't entirely necessary... (0)

alchemist68 (550641) | more than 10 years ago | (#5782152)

in today's world, which is primarily occupied by Micro$oft zombies. Why, I can encrypt my documents manually, employ a random encryption algorythm, and read them [with my eyes] even while encrypted! Take a look here:

!dAOl Si gNiLWoH EhT HO !sTHgIN eTiLNoOm No TNeMeC DLoC eNoTs eHt tSnIAgA lAEnYObwOc SEpaR OCaTRdMc

To the average Borg drone, this looks like M$ Windows just before a fatal crash, and quite possibly THE BLUE SCREEN OF DEATH! Hence, the drone will quickly exit the document, save as many other open documents, and restart the computer.

Re:Thta book isn't entirely necessary... (0)

Anonymous Coward | more than 10 years ago | (#5782641)

Wow, apparently this isn't only a Microsoft junkie problem - I read your post from both Solaris and MacOS and have no idea WTF you're talking about.

Even the lines that appear to be plain text have no apparent meaning!

Re:Thta book isn't entirely necessary... (0)

Anonymous Coward | more than 10 years ago | (#5782880)

It's written backwards using a random mix of upper and lower case letters. How clever!

There is a message about some action being taken by CmdrTaco against CowboyNeal on moonlite nights.

Re:Thta book isn't entirely necessary... (0)

Anonymous Coward | more than 10 years ago | (#5782910)

It's written backwards using a random mix of upper and lower case letters. How clever!

There is a message about some action being taken by CmdrTaco against CowboyNeal on moonlite nights.

Re:Thta book isn't entirely necessary... (1)

charlieo88 (658362) | more than 10 years ago | (#5783010)

!dAOl Si gNiLWoH EhT

Back to the drawing board for you. Seems your encryption doesn't maintain data integrity.

Re:Thta book isn't entirely necessary... (1)

alchemist68 (550641) | more than 10 years ago | (#5783143)

In keeping with the Slasdot tradition, and to approximately half of our readership, I mis-spelled "loud" as "load". "A" is still a vowel like "u"; some would argue it depends on the usage.

decrypt this and you shall learn something my son! (-1)

Anonymous Coward | more than 10 years ago | (#5782212)

ad44f5bd 8c350b2d

|| ||

(xl) (xr)

key = blowfish is cool
key length = 16
encryption algorithm = blowfish 16 rounds

Re:decrypt this and you shall learn something my s (0)

Anonymous Coward | more than 10 years ago | (#5782291)

should be

1f7301f3 and 4fddfb54

it is worth it ...

What about HAC? (5, Informative)

mh_cryptonomicon (608940) | more than 10 years ago | (#5782217)

Applied Crypto is certainly a quality, wide-ranging tome on crypto. For years though, there have been a couple very good books with more implementation details. The Handbook of Applied Crypto from Menezes, et al comes immediately to mind. Either of the two books by Neal Koblitz are excellent. I also like to recommend Decrypted Secrets from Bauer. The Handbook of Applied Crypto is available as a free download from the author's site:

Book Review, Reprint (0, Funny)

drgroove (631550) | more than 10 years ago | (#5782544)

(Using md5() ... )

f828955ca01f9c03a726acf5cc2dbe65 a2a551a6458a8de22446cc76d639a9e9 f97c5d29941bfb1b2fdab0874906ab82 8bf8854bebe108183caeb845c7676ae4 8fc42c6ddf9966db3b09e84365034357 ff5cabab0a5c826fdef2e562e6eb600a 79a352706fc69e70b68a457015ccaf0f d31ed91ae4198835d730482e66e6f58a d529e941509eb9e9b9cfaeae1fe7ca23 8134b84030cca5285ed0e0b31ba06f10 ed2b5c0139cec8ad2873829dc1117d50 d581a916de79aa75cc53096b385c9751 37598dad8f8805ce708ba8c4f67ce367 07ccfe360dce69b84595428e2ec1c1cc ed2b5c0139cec8ad2873829dc1117d50 5452e83a743c0fccd85d322daf053e43 6e57d6c47d23024e41f4a1aac73a3ea9 a77b3598941cb803eac0fcdafe44fac9 f970e2767d0cfe75876ea857f92e319b 6f96cfdfe5ccc627cadf24b41725caa4 9e327d39a0b27bf040f1693e140f3a35 c376109ef8d15c46a24936b7d0e0b560 b971be0e2e7176b90d5501eca32a0226 8fc42c6ddf9966db3b09e84365034357 e91e6348157868de9dd8b25c81aebfb9 8bf8854bebe108183caeb845c7676ae4 52e5783fb2be233a7219dabe6d7f8056 b31df235e8aee38fd08600c353af2b52 21582c6c30be1217322cdb9aebaf4a59 6f96cfdfe5ccc627cadf24b41725caa4 c6e76a72f258857bed843acfbd216ae5 21582c6c30be1217322cdb9aebaf4a59 cc935c5faf4c8f7a0468d7552a9b8138 23f9c1b08ef269ebf4b403ed833a5b03 336d5ebc5436534e61d16e63ddfca327 a2d4bfc626b142774660d5deb9a7f0a7 7d0db380a5b95a8ba1da0bca241abda1 8451fc653eaa269664a6d9b46a238424 336d5ebc5436534e61d16e63ddfca327 e0d00b9f337d357c6faa2f8ceae4a60d f0441366488bd123be0e5fb7d6c03c2b 910955a907e739b81ec8855763108a29 4ab8710d781ba5b13aaf561cafd896b7 ca97d7fcd88d424065b3fb8b1b63495b 6dbdba779ddf6dd053c3785e6bd9d035 9e925e9341b490bfd3b4c4ca3b0c1ef2 a77b3598941cb803eac0fcdafe44fac9 f97c5d29941bfb1b2fdab0874906ab82 8bf8854bebe108183caeb845c7676ae4 8fc42c6ddf9966db3b09e84365034357 addec426932e71323700afa1911f8f1c f3e9e0675feca77f67a7e32898b75dc2 8d8a1b73876ca678cc3afa372e5199de 13b5bfe96f3e2fe411c9f66f4a582adf 8fc42c6ddf9966db3b09e84365034357 e91e6348157868de9dd8b25c81aebfb9 9176a98110716496410503c80b9d1af5 39e61d57e9209611edd4f884e9e47c11 9e925e9341b490bfd3b4c4ca3b0c1ef2 e23ee923e08a2bceae9b0e0d2d3eba80 65b50b04a6af50bb2f174db30a8c6dad ff0cb426c0698739bc5e410313a00f7e 2c843f3bf026929da412897f5c9e7b8e 41a23ff0e62bc39c571d717b71cc6d54 53d8f4d1e2b5be0d0abfde443f017359 f970e2767d0cfe75876ea857f92e319b 0cc175b9c0f1b6a831c399e269772661 6ce207e8f7bc1afc40ba5e1d8a181478 e91e6348157868de9dd8b25c81aebfb9 ff0cb426c0698739bc5e410313a00f7e 7c67f7869117923c58b29eee5f760c5f 7761127a460aaf290ed953098284dd1a 791b0c20a65a95dc903f4928be58156c 01b6e20344b68835c5ed1ddedf20d531 1818d506396d77b3d035f719885c4cd1 26eb20e01947f0cc7bbc2cdb458a499b ed2b5c0139cec8ad2873829dc1117d50 c48d7856c321faa3bf30956cfff0217a 77631ca4f0e08419b70726a447333ab6 1e3057527650f36abc8cfa0131920cda a77b3598941cb803eac0fcdafe44fac9 07ccfe360dce69b84595428e2ec1c1cc 17b9b0dd34a74166f3b3c4b11fc1bd8e 13b5bfe96f3e2fe411c9f66f4a582adf 65b50b04a6af50bb2f174db30a8c6dad e16704d9e243b23b4f4e557748d6eef6 8bf8854bebe108183caeb845c7676ae4 ffb85bfe93f1d2f1654a7048b87f0403 be5d5d37542d75f93a87094459f76678 b8b1ddae9aafe82ed29b973cf9f0b031 4a9e308719d8ca12ef4532207f77a801 8b7af514f25f1f9456dcd10d2337f753 a2a551a6458a8de22446cc76d639a9e9 f016441d00c16c9b912d05e9d81d894d 29e4b66fa8076de4d7a26c727b8dbdfa 13b5bfe96f3e2fe411c9f66f4a582adf f303f9a15cddbe8ee0296511a8b04b30 be5d5d37542d75f93a87094459f76678 1818d506396d77b3d035f719885c4cd1 d98a07f84921b24ee30f86fd8cd85c3c 733d43480c8589b1368e5def6b480415 64ef07ce3e4b420c334227eecb3b3f4c 34207c34eb6aad72ecc67c7d0f2ff324 e2e0ab9c9510bf61fd17296bae8d3d24 567904efe9e64d9faf3e41ef402cb568 5440e70c43cc02aba90d879c888e6e09 bba95533b6f582e295b52fffd93cbb7c 64ef07ce3e4b420c334227eecb3b3f4c aef17870e6a01b4873b45c988b05243f 1977c9daa1d67de51a4651abdb160c09 b208dbc3701c54737a24ac451d75b324 be5d5d37542d75f93a87094459f76678 4a2028eceac5e1f4d252ea13c71ecec6 5440e70c43cc02aba90d879c888e6e09 0d149b90e7394297301c90191ae775f0 aaffefb077c8b53e5895bc6a47b4c2c4 39e61d57e9209611edd4f884e9e47c11 f51712e8f064b4d2080adbe9721c69ed 8fc42c6ddf9966db3b09e84365034357 a363b8d13575101a0226e8d0d054f2e7 a2a551a6458a8de22446cc76d639a9e9 21582c6c30be1217322cdb9aebaf4a59 0d149b90e7394297301c90191ae775f0 33936d8020d405d352a6b59480be510e 2f0e7ef29748dbf6dacf8381c4cc921c ef56b0b0ddb93c2885892c06be830c68 4add50cb3a2eb5480a26379b73193bd4 13b5bfe96f3e2fe411c9f66f4a582adf 8fc42c6ddf9966db3b09e84365034357 4a548addbfb239bbd12f5afe11a4b6dc 8bf8854bebe108183caeb845c7676ae4 8fc42c6ddf9966db3b09e84365034357 6438c669e0d0de98e6929c2cc0fac474 1e383582e9121f060c719bf7501923c0 d98a07f84921b24ee30f86fd8cd85c3c 4144e097d2fa7a491cec2a7a4322f2bc 01b6e20344b68835c5ed1ddedf20d531 b1a253289264a66709b266589eceb1a1 a2a551a6458a8de22446cc76d639a9e9 7fa3b767c460b54a2be4d49030b349c7 29a584a0a488acc44dd6310b823dda02 8bf8854bebe108183caeb845c7676ae4 86024cad1e83101d97359d7351051156 13b5bfe96f3e2fe411c9f66f4a582adf 8fc42c6ddf9966db3b09e84365034357 e0d00b9f337d357c6faa2f8ceae4a60d d9fa32ccbc0dd833f66c4bdedd70bdbb 37598dad8f8805ce708ba8c4f67ce367 8fc42c6ddf9966db3b09e84365034357 63dbe46ba2a430bed43c0b684f47b7e3 08b72efa9eb49c94cb0dcfa16dbdc14c 8bf8854bebe108183caeb845c7676ae4 bd4c4ea1b44a8ff2afa18dfd261ec2c8 304ef28c6ec5d702f0c2d900b1061ac1 3b5f73df1833641001a9b3070fb5b488 423f660aa53b78622271cfad0cdc5dee d98a07f84921b24ee30f86fd8cd85c3c 27ade1b64f9515dbb776cc3cc5bc3377 2c0facc1682e5a9f2bdc0d687e82e320 86263f590e49ae783c0ebedc538b5a95 8451fc653eaa269664a6d9b46a238424 43a0a1e8212cd9140a5c1fa1ef5a5bac 53d670af9bb16ea82e7ef41ee23ec6df 2c61ebff5a7f675451467527df66788d 910955a907e739b81ec8855763108a29 8598381995b293c1cb42d20e40c3aef7 01b6e20344b68835c5ed1ddedf20d531 06d4cd63bde972fc66a0aed41d2f5c51 ed2b5c0139cec8ad2873829dc1117d50 6b649d34c8874d5dd6e0320bc2fb24bc be5d5d37542d75f93a87094459f76678 94ede22f3c8c4cbc1b7430816405dd09 dd7536794b63bf90eccfd37f9b147d7f c04cd38aeb30f3ad1f8ab4e64a0ded7b 6299ba2cbd9661a5e3872b715521cd6a 18b049cc8d8535787929df716f9f4e68 356042d9747bdc14e0055408b9430b2a 13b5bfe96f3e2fe411c9f66f4a582adf 9e925e9341b490bfd3b4c4ca3b0c1ef2 82905329b983762dc6f35f5a6d5eabd2 dd7536794b63bf90eccfd37f9b147d7f 600d6af0f320a021dc494cfa2daca569 0d149b90e7394297301c90191ae775f0 f970e2767d0cfe75876ea857f92e319b 0369be460f8b404646652fe14d5d7161 21582c6c30be1217322cdb9aebaf4a59 6299ba2cbd9661a5e3872b715521cd6a aa944e6cb76d6e69cb74a741859e38f6 d88888536e6c1723f1ba7a9e77b8fe80 b3b83022d26776612abfb38cfe38fbc1 aa737ba1087d9ddad6ad2f4e73772804 38c885679313ab0c42dbf11bec4e0a32 8b7af514f25f1f9456dcd10d2337f753 b42dad5453b2128a32f6612b13ea5d9f 71182838ede897b2849bc909ef395a16 8fc42c6ddf9966db3b09e84365034357 098f6bcd4621d373cade4e832627b4f6 8bf8854bebe108183caeb845c7676ae4 07cc694b9b3fc636710fa08b6922c42b 4015e9ce43edfb0668ddaa973ebc7e87 abcf714c6f49bfc7a4c5468b4a0435e6 60acec636777b72e6bd9507b25ca5a81 cc935c5faf4c8f7a0468d7552a9b8138 0cc175b9c0f1b6a831c399e269772661 19bdd3dae7fae3fcecee18845d189289 7dcf5e1eb5e8fa02cdd1dd4415aaef3e d37f0dc17ea37992b320a6f671151d54 77631ca4f0e08419b70726a447333ab6 bb2b21ef7774df8687ff02b0284505c6 8cd283d8b7bacc277f2bae5e26ce6d1e 21582c6c30be1217322cdb9aebaf4a59 4015e9ce43edfb0668ddaa973ebc7e87 e764d1a0bbe357da8b48d3bc08c68415 13b5bfe96f3e2fe411c9f66f4a582adf 55c9ee3beff9b131586901889ba3714f 09d6630f15ebed1a68325026bef45812 06c2cea18679d64399783748fa367bdd 8bf8854bebe108183caeb845c7676ae4 8fc42c6ddf9966db3b09e84365034357 8d8a1b73876ca678cc3afa372e5199de 23a58bf9274bedb19375e527a0744fa9 d5d74776e3ac5e9664d309474af670c2 ff0359266587deb2b1e81570ad412d83 e9851e68801e12952b80232de9612246 df3f079de6961496f0460dcfdbf9bca3 8fc42c6ddf9966db3b09e84365034357 00ef2345d335e66228d5346273ab33d1 a2a551a6458a8de22446cc76d639a9e9 21582c6c30be1217322cdb9aebaf4a59 0d149b90e7394297301c90191ae775f0 857af22f119fefbfa24769ed2ad6d5e7 d6b090b4e62343143878a875860f845b 7fa3b767c460b54a2be4d49030b349c7 b6fa15360b4cdce4806bf9a0580c8f0f c1d1f44089e72d95db758f0691f81936 a56c89d3c688cca621556188e4f9e10f 8fc42c6ddf9966db3b09e84365034357 52e5783fb2be233a7219dabe6d7f8056 06e3d36fa30cea095545139854ad1fb9 3309a7a7941818e131b4dfb9a6349914 11dfd868d93bc2b0e4ce0bee5756f8b1 ed2b5c0139cec8ad2873829dc1117d50 50324905c471f3d4d61f7d3f723f3644 584826e70485130530f7f01a973d5637 914f8b0906332e5eebd1fdfe7520afb2 f7c0a09108cdf26287c1bc5af2ed1f93 4c6cdab5b244074c4fb256c3183fd834 23a58bf9274bedb19375e527a0744fa9 8fc42c6ddf9966db3b09e84365034357 319495d3f42bbdbb87c4c00529cd3f76 8bf8854bebe108183caeb845c7676ae4 f92201fd9c879328a6b24fa434b845f2 f970e2767d0cfe75876ea857f92e319b 8fc42c6ddf9966db3b09e84365034357 9b6545e4cea9b4ad4979d41bb9170e2b d7f2615c71a1567cc13cf3a7f7de0aea d2a455c7a9e7acb71c6177f851a6535e 97bc592b27a9ada2d9a4bb418ed0ebed 0cc175b9c0f1b6a831c399e269772661 b1de99702d7654948b507d8fbbea9700 0fe5ba6b63aa7b43f173d8f42eb1be4f a82be0f551b8708bc08eb33cd9ded0cf 643562a9ae7099c8aabfdc93478db117 db278dc06d1c383cc6439429feb4f6ff 36cd38f49b9afa08222c0dc9ebfe35eb c13367945d5d4c91047b3b50234aa7ab 01b6e20344b68835c5ed1ddedf20d531 4144e097d2fa7a491cec2a7a4322f2bc 3309a7a7941818e131b4dfb9a6349914 8c00c19e66a7ba9d80bded9460cb1b41 e4894ca167b08880bfc35862f18575eb d98a07f84921b24ee30f86fd8cd85c3c 2f0e7ef29748dbf6dacf8381c4cc921c ef56b0b0ddb93c2885892c06be830c68 8fc42c6ddf9966db3b09e84365034357 673d4f049f0db3d188488f447477968a 8bf8854bebe108183caeb845c7676ae4 8fc42c6ddf9966db3b09e84365034357 23c85c7e354b2db526be4d296fdcda86 914f8b0906332e5eebd1fdfe7520afb2 37598dad8f8805ce708ba8c4f67ce367 f97c5d29941bfb1b2fdab0874906ab82 8bf8854bebe108183caeb845c7676ae4 8fc42c6ddf9966db3b09e84365034357 8d8a1b73876ca678cc3afa372e5199de 8b7af514f25f1f9456dcd10d2337f753 4f790b81eca5b41119787618405b3474 0cc175b9c0f1b6a831c399e269772661 b82cde5761c99e09536b4e60984ecdb9 52e5783fb2be233a7219dabe6d7f8056 7d3ef890780a71cf0a395f474b82e6b7 a2a551a6458a8de22446cc76d639a9e9 db88a0257c220dbfdd2e40f6152d6a8d 01b6e20344b68835c5ed1ddedf20d531 a2aee33eec3c1c2fcb191358d34c4fdb 0cc175b9c0f1b6a831c399e269772661 c327b49efdca2668f28cd7b4beee54b3 52e5783fb2be233a7219dabe6d7f8056 f5bf48aa40cad7891eb709fcf1fde128 a66db021d84e617bd7667ee300aa29c8 ed2b5c0139cec8ad2873829dc1117d50 8fc42c6ddf9966db3b09e84365034357 69c7523ced35902f7b3cbc4448524f36 21582c6c30be1217322cdb9aebaf4a59 f97c5d29941bfb1b2fdab0874906ab82 f0441366488bd123be0e5fb7d6c03c2b ac0d0a292a3725daf32d58083e8e194c 36684da1b213d7afb069cf0b17d85abf 6c8d61508321ac444175370124200350 463d34fc8e4e07b63ccc2f31bdaffe3a 9e5459f8c51cb6478228949cbc6f6c0e 129274265df45bf3d6f9a42a9fa559a8 8fc42c6ddf9966db3b09e84365034357 36cd38f49b9afa08222c0dc9ebfe35eb c13367945d5d4c91047b3b50234aa7ab 13b5bfe96f3e2fe411c9f66f4a582adf 0cc175b9c0f1b6a831c399e269772661 a9c449d4fa44e9e5a41c574ae55ce4d9 5440e70c43cc02aba90d879c888e6e09 d529e941509eb9e9b9cfaeae1fe7ca23 0cc175b9c0f1b6a831c399e269772661 d0d6bc2a290438b023d7682e614935be 1f78eb22ab815841dbf51904a292fd08 f970e2767d0cfe75876ea857f92e319b f828955ca01f9c03a726acf5cc2dbe65 0aab81de5c4c87021772015efc184d67 c68271a63ddbc431c307beb7d2918275 e0d00b9f337d357c6faa2f8ceae4a60d a2a551a6458a8de22446cc76d639a9e9 42259bfc9e0d8b5703e0051a243badc8 c33315685a0cba3ce53be378b3c7874b 9e925e9341b490bfd3b4c4ca3b0c1ef2 a2a551a6458a8de22446cc76d639a9e9 567904efe9e64d9faf3e41ef402cb568 9e925e9341b490bfd3b4c4ca3b0c1ef2 22af645d1859cb5ca6da0c484f1f37ea 821f03288846297c2cf43c34766a38f7 a2a551a6458a8de22446cc76d639a9e9 f1a81ebc19d54184c785cf0640aa8216 0d149b90e7394297301c90191ae775f0 a8c478391757a06ee53d8aec274b31a6 639bae9ac6b3e1a84cebb7b403297b79 13b5bfe96f3e2fe411c9f66f4a582adf acaa16770db76c1ffb9cee51c3cabfcf 951da6b7179a4f697cc89d36acf74e52 db88a0257c220dbfdd2e40f6152d6a8d d64a84456adc959f56de6af685d0dadd 0d149b90e7394297301c90191ae775f0 c9ec927d69db7069a350647ab85a15cf 4a2028eceac5e1f4d252ea13c71ecec6 8fc42c6ddf9966db3b09e84365034357 1c486b19e0fc26250dacda87f19917ef 78f0805fa8ffadabda721fdaf85b3ca9 03aec9fb0a166e78c15df13067d5d528 be5d5d37542d75f93a87094459f76678 db88a0257c220dbfdd2e40f6152d6a8d 639bae9ac6b3e1a84cebb7b403297b79 2c61ebff5a7f675451467527df66788d d8688e71334a5f32371d3a340fa1ffdf 8fc42c6ddf9966db3b09e84365034357 e70c4df10ef0983b9c8c31bd06b2a2c3 ed2b5c0139cec8ad2873829dc1117d50 8fc42c6ddf9966db3b09e84365034357 740457010945af5b62798ac83581b9fd 639bae9ac6b3e1a84cebb7b403297b79 9a4b6f884971dcb4a5172876b335baab ef87f051e5c271f948020014f3c59dd4 13b5bfe96f3e2fe411c9f66f4a582adf 8dc497ec2e5f87c17752ed92c5bf603f 52e5783fb2be233a7219dabe6d7f8056 0f1edb0d138c9915fd9bb781f78c7ada 821f03288846297c2cf43c34766a38f7 49c51d19e21c21f775751cde0ea90db5 7fa3b767c460b54a2be4d49030b349c7 cb73ac4f20cd73d505b1f85780a5a31f be5d5d37542d75f93a87094459f76678 5440e70c43cc02aba90d879c888e6e09 d529e941509eb9e9b9cfaeae1fe7ca23 e7cff41db253a207a14e0bdd871b0e5d 3b759a9ca80234563d87672350659b2b 100b8cad7cf2a56f6df78f171f97a1ec fe5fe0415fc3e0ff4942d8454f363d2c ec7604ab0abce22058f2ffc01d964ccf 01b6e20344b68835c5ed1ddedf20d531 be68540dfa000a0fb38be40d32259215 52e5783fb2be233a7219dabe6d7f8056 93763459f71271c2d65db9d5a609a1b0 6e57d6c47d23024e41f4a1aac73a3ea9 6c996181cb66b09cf475386ff06ad9e2 23a58bf9274bedb19375e527a0744fa9 a181a603769c1f98ad927e7367c7aa51 8fc42c6ddf9966db3b09e84365034357 f1425da40a9f2d21ab702a1c7feae026 4725dcf446a342f1473a8228e42dfa48 8bf8854bebe108183caeb845c7676ae4 0cc175b9c0f1b6a831c399e269772661 88645dd77a6fd39683d2f4dcf664a222 1c93083f70a6a4d4b3bc11d299143552 8fc42c6ddf9966db3b09e84365034357 23c85c7e354b2db526be4d296fdcda86 f1425da40a9f2d21ab702a1c7feae026 ff4dee88db82e98f0e0d524d965b9aa7 4015e9ce43edfb0668ddaa973ebc7e87 65f52957353ba38875538857817b4524 4c2a8fe7eaf24721cc7a9f0175115bd4 517aefa7bb01621afcc3829026c1b0c5 897356954c2cd3d41b221e3f24f99bba 77d2f65c4ab9c5021bf2e054bb0714ae 897356954c2cd3d41b221e3f24f99bba fe4dbcab9b910577e5035e97ac068dae be5d5d37542d75f93a87094459f76678 2c4ba8d8692d40150ba423e8c0a6d03f 933dd8674c563081260867dfa95b5e74 8bf8854bebe108183caeb845c7676ae4 bd4c4ea1b44a8ff2afa18dfd261ec2c8 ff4dee88db82e98f0e0d524d965b9aa7 d850f04cdb48312a9be171e214c0b4ee 4015e9ce43edfb0668ddaa973ebc7e87 c902a61794c63ac71c92866bc0556092 3a6e2316df934b04c934a8f17c39884e 268257b12b1f11adc14a142182081e8d 50a22d972de6fbb999b3944af7364fa3 a181a603769c1f98ad927e7367c7aa51 8fc42c6ddf9966db3b09e84365034357 325256f28f290cc43b376503829b3658 0aab81de5c4c87021772015efc184d67 4362bbaab76308452a5ea7f8096a87be 7c4f29407893c334a6cb7a87bf045c0d 74e8333ad11685ff3bdae589c8f6e34d 01b6e20344b68835c5ed1ddedf20d531 8fc42c6ddf9966db3b09e84365034357 f2b5ca4ae801110d2127660a158648b7 39e61d57e9209611edd4f884e9e47c11 82ff4c2f84ec26e6ec5968ad7cb3ed85 8fc42c6ddf9966db3b09e84365034357 8b04d5e3775d298e78455efc5ca404d5 7a3e56dbf4b75792017d682faf64ac07 8bf8854bebe108183caeb845c7676ae4 8fc42c6ddf9966db3b09e84365034357 897356954c2cd3d41b221e3f24f99bba fe4dbcab9b910577e5035e97ac068dae 73d5342eba070f636ac3246f319bf77f 6c996181cb66b09cf475386ff06ad9e2 23a58bf9274bedb19375e527a0744fa9 8fc42c6ddf9966db3b09e84365034357 af949ff62cb119b9b7afdb247d89abab 6e57d6c47d23024e41f4a1aac73a3ea9 81095d5c16b805aeb505d9a6885f6a02 d98a07f84921b24ee30f86fd8cd85c3c 8b04d5e3775d298e78455efc5ca404d5 0fc6de89aa1fcca53e6407f6dcdc2255 8fc42c6ddf9966db3b09e84365034357 e877c56e4fb621e81fd30dbd114a545b d55669822f1a8cf72ec1911e462a54eb 0cc175b9c0f1b6a831c399e269772661 0b1351ea9a34d7d31b27c6edd40cd0eb 6c9f75cd3a9f5cd8833965ec5bf623e0 8b04d5e3775d298e78455efc5ca404d5 ccb5a004ea0fe656291d4582e1bc6f4a 05f976e68c3731b80acec98edf173e7f b39c5f97e8e951b9bf343713634ab321 a2a551a6458a8de22446cc76d639a9e9 0cc175b9c0f1b6a831c399e269772661 7670ad1f7579fb5504decadb6a343d98 773417a6d20d005f6a686c5acecaafaa dda908b2869395112539a1e34a39139b 37598dad8f8805ce708ba8c4f67ce367 cc70865f1ecd933ec055851deb5bd69a 8fc42c6ddf9966db3b09e84365034357 43b5c9175984c071f30b873fdce0a000 07cc694b9b3fc636710fa08b6922c42b a2a551a6458a8de22446cc76d639a9e9 fd168b4a17c3ade763b5d169284de95c 1aec9c5d0644e11fd9dd0f9fb36009fb 13b5bfe96f3e2fe411c9f66f4a582adf 52e5783fb2be233a7219dabe6d7f8056 088ad80d2ed8e87fd81ee76db2dfd203 ff1ccf57e98c817df1efcd9fe44a8aeb e877c56e4fb621e81fd30dbd114a545b 0cc175b9c0f1b6a831c399e269772661 2c9cfc23e2116a3a55846157a62f8a8d 591770a5f99a05ede8c52d029a68c0a0 6e57d6c47d23024e41f4a1aac73a3ea9 a2a551a6458a8de22446cc76d639a9e9 9e925e9341b490bfd3b4c4ca3b0c1ef2 cadc8c8db42409733582cb3e2298ef87 8bf8854bebe108183caeb845c7676ae4 4c4a9fd7f4a4a416922b64bb3060bcd3 01b6e20344b68835c5ed1ddedf20d531 e5dee84f405b9366f44feef46df9704d b6fa15360b4cdce4806bf9a0580c8f0f 27792947ed5d5da7c0d1f43327ed9dab 21582c6c30be1217322cdb9aebaf4a59 7b27dc1e1a23efc62996ca016c97769e 88dba0c4e2af76447df43d1e31331a3d d98a07f84921b24ee30f86fd8cd85c3c 0cc175b9c0f1b6a831c399e269772661 3f8e09366b7d6118ac7a23432142474a ae18fe4e01e61a9862ceaf165003213a 821f03288846297c2cf43c34766a38f7 b971be0e2e7176b90d5501eca32a0226 18b049cc8d8535787929df716f9f4e68 92305fa993b43556988dc0ade09c30d6 b8af13ea9c8fe890c9979a1fa8dbde22 be5d5d37542d75f93a87094459f76678 0cc175b9c0f1b6a831c399e269772661 b326b5062b2f0e69046810717534cb09 d116b7dbb77dc227282c75ddf97f09a6 92305fa993b43556988dc0ade09c30d6 518a4861e5be74863a6b65010bde3986 a2a551a6458a8de22446cc76d639a9e9 8fc42c6ddf9966db3b09e84365034357 c047bc59f51f52bfe702fd93ae105aa7 5ef76d30bf9232902687324b5bfa0bd2 8bf8854bebe108183caeb845c7676ae4 5cde46a286fce8a2efec6f9043729901 e506d5f795ef66b49ddf65b7c1af7297 d529e941509eb9e9b9cfaeae1fe7ca23 6299ba2cbd9661a5e3872b715521cd6a d55669822f1a8cf72ec1911e462a54eb c72c1b81a8cd93597e381c5bd2c1ac55 b951640b89d546b833f5dbebef0823c9 6f129a2e6e103ea342a085875931830b f970e2767d0cfe75876ea857f92e319b 2a4e8ec6563e99f9f29d1e8e7bc29653 be5d5d37542d75f93a87094459f76678 14511f2f5564650d129ca7cabc333278 b8daf192b0a0b316b93ad7893292e6ba 37598dad8f8805ce708ba8c4f67ce367 07ccfe360dce69b84595428e2ec1c1cc d55669822f1a8cf72ec1911e462a54eb 48ee0ccd3192cd136435e9a84cd76a40 ba19a09a68a66f8ad972ef8a5fba6f0d be1ab1632e4285edc3733b142935c60b 80f5f164aa43626d4045163a4ae593b5 be5d5d37542d75f93a87094459f76678 0639f5c0e2228ccdf3385f88f1579491 94dd8658ceb679bd2c3804fa6a07ac4c be5d5d37542d75f93a87094459f76678 f828955ca01f9c03a726acf5cc2dbe65 4015e9ce43edfb0668ddaa973ebc7e87 df69f8cd2bc8144ddfdcf9e10562fee3 22c0059b7092348e518880af905fce2a 13da35c933e11cacc268a3888da770d0 b3c5b21d2cb47cc950fd4667edaf404c 2bb3d86d95234affa7c5bd68c4bab606 2d46f6286511bd2e22f9c02907274872 058523035177dd004d31d8be251a7f3d 13b5bfe96f3e2fe411c9f66f4a582adf a0c5cd2b22d3924b16583324773a9954 2bb3d86d95234affa7c5bd68c4bab606 e1686078d1b60d351da5a87543a2a663 639bae9ac6b3e1a84cebb7b403297b79 af9dc3cd6ce29d560a1e4077694254d9 1d9e348141a4a084c649ca616877f279 39e61d57e9209611edd4f884e9e47c11 82ff4c2f84ec26e6ec5968ad7cb3ed85 8fc42c6ddf9966db3b09e84365034357 8b04d5e3775d298e78455efc5ca404d5 32a97fa20c7928bbe37dea5aec0ebdbd 8bf8854bebe108183caeb845c7676ae4 7a3e56dbf4b75792017d682faf64ac07 ce24b1d44a072a4edee65f4d03253406 b7bd5932fa17c94b7efea85c6031d4d5 857af22f119fefbfa24769ed2ad6d5e7 8fc42c6ddf9966db3b09e84365034357 4245bf56d28f22197a4b30b46c809626 21582c6c30be1217322cdb9aebaf4a59 99fcc736517a06d77592889033ab25ae ee288f745ff123bea93659882cb5ee57 e770021b529ca13c4ceae7f30e6802ec 22ec7999488b4c7a03d6a42a786cc6b8 901889f4f34f8ca18ac2f53d1fed346e 8fc42c6ddf9966db3b09e84365034357 5d9449e8d8508c7ee2cf746c86e5dde3 34d1f91fb2e514b8576fab1a75a89a6b cc935c5faf4c8f7a0468d7552a9b8138 75abd646aa7982eb338fb51b49178384 df491a4de50739fa9cffdbd4e3f4b4bb 2b68e5c50a4608321bc73c6fe0af4b7d 23a58bf9274bedb19375e527a0744fa9 f8d295ce4a2dc939ae366469b1ca67e0 6591340ffc74fad6d1c9892a86389bae 4209e78a88e32165c94ba54d3d966871 ed2b5c0139cec8ad2873829dc1117d50 4cdc0f1c638f2a7fb92c84b563a4b34d ae33cd3d44dba21fbc67bd1744987a8c 639bae9ac6b3e1a84cebb7b403297b79 0c31f29f074ee4a2d1ca29ed05155f6a 99be1ee67a0137092d3d112c0620c552 efb5803993a803fe4414fa2ca001a84f d98a07f84921b24ee30f86fd8cd85c3c f8d295ce4a2dc939ae366469b1ca67e0 c0eb5068c9a2c108616d5a5fa25773f9 786887572f6ef1c20f2d8177cb2f1639 639bae9ac6b3e1a84cebb7b403297b79 e877c56e4fb621e81fd30dbd114a545b 0cc175b9c0f1b6a831c399e269772661 e23ee923e08a2bceae9b0e0d2d3eba80 ecae13117d6f0584c25a9da6c8f8415e d0cc5b1aae3d1675296a6603c5aedb73 be5d5d37542d75f93a87094459f76678 8882fdf85abc8feb3aeb63eca9f57db2 77631ca4f0e08419b70726a447333ab6 b076a15809fa465412ad76bdfc23d7b4 a2a551a6458a8de22446cc76d639a9e9 57219caed02cc1b2bcf3bb26bf98a38b c70967289473629fa9dc85819b3fddff df491a4de50739fa9cffdbd4e3f4b4bb a7ae73938181698183b58eb784f75456 23a58bf9274bedb19375e527a0744fa9 8fc42c6ddf9966db3b09e84365034357 cfa6f4fd02ca48c68f224224f8996e0f 89759e1284e2479b991d2669de104942 21582c6c30be1217322cdb9aebaf4a59 b807023f87e63b8ada92f79f546ff9cc 8cd283d8b7bacc277f2bae5e26ce6d1e c6fbb5ca6219111731f9c4c4d2675810 be5d5d37542d75f93a87094459f76678 f9fa10ba956cacf91d7878861139efb9 2bc28e228525b75e14c07dbc14850c34 85814ce7d88361ec8eb8e07294043bc3 01b6e20344b68835c5ed1ddedf20d531 f8a3adfb12a9382682b8d7022e5ead61 463d34fc8e4e07b63ccc2f31bdaffe3a 09d6630f15ebed1a68325026bef45812 9e925e9341b490bfd3b4c4ca3b0c1ef2 fd99cadea9d8ef6a1ffcc52a2e3e8017 a2a551a6458a8de22446cc76d639a9e9 d529e941509eb9e9b9cfaeae1fe7ca23 8134b84030cca5285ed0e0b31ba06f10 b9f4c1cc743af7b09673ba380390d2f1 13b5bfe96f3e2fe411c9f66f4a582adf 5321d9974b2564219a65f1bd5b14af25 03bc2019f99ecdd94f9e27100152f8f0 be5d5d37542d75f93a87094459f76678 df491a4de50739fa9cffdbd4e3f4b4bb 8fc42c6ddf9966db3b09e84365034357 5d9449e8d8508c7ee2cf746c86e5dde3 cb41ecf6e90a594dcea60b6140251d62 8fc42c6ddf9966db3b09e84365034357 bf7b83f5e1b17616ccf3e2af66e54e47 8bf8854bebe108183caeb845c7676ae4 f8d295ce4a2dc939ae366469b1ca67e0 13b5bfe96f3e2fe411c9f66f4a582adf 0cc175b9c0f1b6a831c399e269772661 29e4b66fa8076de4d7a26c727b8dbdfa 43ddcd6d2df988b6f54f01c77a1abc8a 2bb3d86d95234affa7c5bd68c4bab606 21394643f224529e28b2ed1d2e03fb65 fa46da171e97c7079516c3d0c31932f0 5a0cbfc2c5148d5c17f513cbdbbaa87b 639bae9ac6b3e1a84cebb7b403297b79 d0e6ef34e76c41b0fac84f608289d013 5ef76d30bf9232902687324b5bfa0bd2 372311ee1fcb868916d383cd1cbd7626 639bae9ac6b3e1a84cebb7b403297b79 b42dad5453b2128a32f6612b13ea5d9f c68271a63ddbc431c307beb7d2918275 5a013a8f3efb997d0bdc7a247c857e0b c04cd38aeb30f3ad1f8ab4e64a0ded7b b0182e969d369add1b9ce2353d3c6ad6 01b6e20344b68835c5ed1ddedf20d531 7aa28ed115707345d0274032757e8991 01b6e20344b68835c5ed1ddedf20d531 bad47b251ce2232bd69b2445aca3332b 8fc42c6ddf9966db3b09e84365034357 821f03288846297c2cf43c34766a38f7 7d0db380a5b95a8ba1da0bca241abda1 acaa16770db76c1ffb9cee51c3cabfcf dc4b948776c2bbf8a737ffc49ea52f4f 37598dad8f8805ce708ba8c4f67ce367 01b6e20344b68835c5ed1ddedf20d531 43781db5c40ecc39fd718685594f0956 ff2364a0be3d20e46cc69efb36afe9a5 dd7536794b63bf90eccfd37f9b147d7f 18218139eec55d83cf82679934e5cd75 8134b84030cca5285ed0e0b31ba06f10 4dd429acbc6ba3433af7f9bf5b4791c9 03d59e663c1af9ac33a9949d1193505a 75abd646aa7982eb338fb51b49178384 6d50d14931737f519037a6b8769811ac d98a07f84921b24ee30f86fd8cd85c3c 9e925e9341b490bfd3b4c4ca3b0c1ef2 ae72a3da2ef4ce3926acfd5ad3646a58 d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e 3389dae361af79b04c9c8e7057f60cc6 b672f52ade975e864ae6b58722c03689 fe5fe0415fc3e0ff4942d8454f363d2c 6f129a2e6e103ea342a085875931830b f970e2767d0cfe75876ea857f92e319b f0a1dfdc675b0a14a64099f7ac1cee83 a2ed749162fd4a6b7cd1062914bdb81c 85e240469ff105ef23be412cf33deae7 cd69b4957f06cd818d7bf3d61980e291 f738a9e1de69427bb2299b5304746a48 88d8c09d64619a645e275d3739ab941c c1a39fac186a31695cd94b3da5447548 05ebe6bd7065c9b2008ce85d8883e5e9 4015e9ce43edfb0668ddaa973ebc7e87 a72ed46ebb1280e51746ce28ded53942 13b5bfe96f3e2fe411c9f66f4a582adf edc1e3ea2ca4939a55f1edf84a1fb85e 951da6b7179a4f697cc89d36acf74e52 d55669822f1a8cf72ec1911e462a54eb 639bae9ac6b3e1a84cebb7b403297b79 01b6e20344b68835c5ed1ddedf20d531 67b0d7c16929369c0ce38e0d9b65c0cc db88a0257c220dbfdd2e40f6152d6a8d 01b6e20344b68835c5ed1ddedf20d531 d4579b2688d675235f402f6b4b43bcbf f2074a5c7bde881f3697cae2a23ae7f2 be5d5d37542d75f93a87094459f76678 addec426932e71323700afa1911f8f1c 51c374e88875e2a5d056b50214fcd4d8 db88a0257c220dbfdd2e40f6152d6a8d d529e941509eb9e9b9cfaeae1fe7ca23 01b6e20344b68835c5ed1ddedf20d531 d4579b2688d675235f402f6b4b43bcbf e4f12cb7e89fcc40fcc3c4b477368689 d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e 3389dae361af79b04c9c8e7057f60cc6 a94255ed7a86c2581eeed435b7f0f780 458b0c70ef9e7ef69e5d02f661d3c8f8 be5d5d37542d75f93a87094459f76678 37a184204b9448f00fb83003d8a6cc69 4015e9ce43edfb0668ddaa973ebc7e87 a72ed46ebb1280e51746ce28ded53942 13b5bfe96f3e2fe411c9f66f4a582adf edc1e3ea2ca4939a55f1edf84a1fb85e 12a055bf01a31369fe81ac35d85c7bc1 d55669822f1a8cf72ec1911e462a54eb 18b049cc8d8535787929df716f9f4e68 249adde148f6191aba7c44dfa942384c 01b6e20344b68835c5ed1ddedf20d531 ebc7748dfc82aaa2b35b8d1cc3fdfe7e 93685c41198b050e5be906ca04222810 be5d5d37542d75f93a87094459f76678 5cde46a286fce8a2efec6f9043729901 bfebe34154a0dfd9fc7b447fc9ed74e9 4015e9ce43edfb0668ddaa973ebc7e87 787673bad60b019b60998b998b53ae3c d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e 3389dae361af79b04c9c8e7057f60cc6 4d9c3e3a889034766cd62d6c71c78f67 e329b27943961ccab9dc7a8ac2edb666 6f129a2e6e103ea342a085875931830b f970e2767d0cfe75876ea857f92e319b 10f12151ef41361b91ee3fc1065e14d2 0a679c0e4b944b021c064884db988bc5 1471e4e05a4db95d353cc867fe317314 be5d5d37542d75f93a87094459f76678 afacdb0a401ccdf6b48551bbc00e8a74 157db7df530023575515d366c9b672e8 26e816805c2eb54063da29d3d21a3641 4015e9ce43edfb0668ddaa973ebc7e87 e764d1a0bbe357da8b48d3bc08c68415 13b5bfe96f3e2fe411c9f66f4a582adf 7a3af604e52e2577b3f5b77e96f3e01d 0aaec984ae4f24a74b87d08f36c6c37b d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e d41d8cd98f00b204e9800998ecf8427e 3389dae361af79b04c9c8e7057f60cc6 e19800eb0beb00b2d496fe7452873358 584826e70485130530f7f01a973d5637 ae3a522019c17333dc7938c7792a518d be5d5d37542d75f93a87094459f76678 3ee28fe1a60c95b89d29317f122c7021 4015e9ce43edfb0668ddaa973ebc7e87 a72ed46ebb1280e51746ce28ded53942 23a58bf9274bedb19375e527a0744fa9 26f6bd393df766642c4e6215573c6059 be5d5d37542d75f93a87094459f76678 a56c2fff0f5f4c4d764c0b1071175a45 639bae9ac6b3e1a84cebb7b403297b79 2c61ebff5a7f675451467527df66788d e33276c2e5c547d2952cc483825371f7 4142047431f5f974ef182c6f3a4982f6 d98a07f84921b24ee30f86fd8cd85c3c 8fc42c6ddf9966db3b09e84365034357 55a9d6aa251e3c334db4ab4055a4a004 27b8bc33742c9e7c1282f2f8c7418ac3 dd7536794b63bf90eccfd37f9b147d7f 2d46f6286511bd2e22f9c02907274872 21582c6c30be1217322cdb9aebaf4a59 8fc42c6ddf9966db3b09e84365034357 4bca24304861acde5770fdbe3cc2503b 2063c1608d6e0baf80249c42e2be5804 8bf8854bebe108183caeb845c7676ae4 9e925e9341b490bfd3b4c4ca3b0c1ef2 821f03288846297c2cf43c34766a38f7 33936d8020d405d352a6b59480be510e 13b5bfe96f3e2fe411c9f66f4a582adf 8fc42c6ddf9966db3b09e84365034357 b82c91e2103d0a495c099f0a12f66363 21582c6c30be1217322cdb9aebaf4a59 b8a9f715dbb64fd5c56e7783c6820a61 54d367fda5dbb6f49e6b915fa0678d0a d31ed91ae4198835d730482e66e6f58a 13b5bfe96f3e2fe411c9f66f4a582adf f6cb3e816496528d4187db53bc66567f af5443b3a2c16990166ab234f3bfb569 be5d5d37542d75f93a87094459f76678 06ac32e8b253914a448946c1b90f954c 4015e9ce43edfb0668ddaa973ebc7e87 52d6127375d82f3e300827eb479b2c65 4a2028eceac5e1f4d252ea13c71ecec6 987660415d95904aac3cde69531e392c be5d5d37542d75f93a87094459f76678 addec426932e71323700afa1911f8f1c e411c31b3efae8873bfd766c5e47aa05 4a2028eceac5e1f4d252ea13c71ecec6 639bae9ac6b3e1a84cebb7b403297b79 55f195813a158d82e2934cfac569575d ebc7748dfc82aaa2b35b8d1cc3fdfe7e be1ab1632e4285edc3733b142935c60b 8fc42c6ddf9966db3b09e84365034357 69b75c1522d4926b75f0adbc74938f17 df491a4de50739fa9cffdbd4e3f4b4bb c327b49efdca2668f28cd7b4beee54b3 23a58bf9274bedb19375e527a0744fa9 7c45332a896ff1518e6c8406a379ed8a 77631ca4f0e08419b70726a447333ab6 bb3ccd5881d651448ded1dac904054ac 3309a7a7941818e131b4dfb9a6349914 3103a7d8f63cb184287c558ca51c6160 97bc592b27a9ada2d9a4bb418ed0ebed 338df7da62b46c8adba5540c88c7cb02 6299ba2cbd9661a5e3872b715521cd6a 8c00c19e66a7ba9d80bded9460cb1b41 e4894ca167b08880bfc35862f18575eb df3f079de6961496f0460dcfdbf9bca3 a6e71e02cd9c6565c2ad2fbaf135bf64 01b6e20344b68835c5ed1ddedf20d531 12a032ce9179c32a6c7ab397b9d871fa be1ab1632e4285edc3733b142935c60b f828955ca01f9c03a726acf5cc2dbe65 be5d5d37542d75f93a87094459f76678 e6ea0b3f88e22276c807f9f50199057b 5e9f233b7d7f8a0b6931fdc96e3b271d 1852fbae944d82f4da0c9410f0763ca8 0a8b81283c6a9256674fa31b4502373a e81c4e4f2b7b93b481e13a8553c2ae1b 7d0db380a5b95a8ba1da0bca241abda1 002824ab6b49f7bdb68b5c3940cd7f46 35537fbc25d87ffe59e4f35fefcd34b7 dc609eb4c50647e55dd27071424b4ce7 8fc42c6ddf9966db3b09e84365034357 5d9449e8d8508c7ee2cf746c86e5dde3 78ee54aa8f813885fe2fe20d232518b9 c68271a63ddbc431c307beb7d2918275 21582c6c30be1217322cdb9aebaf4a59 cc935c5faf4c8f7a0468d7552a9b8138 72810d6f5f4c1725d709fa8fd7334a7f 01b6e20344b68835c5ed1ddedf20d531 0d7f7f5144b150566bc5140b5ddb291b a2a551a6458a8de22446cc76d639a9e9 d529e941509eb9e9b9cfaeae1fe7ca23 fc0cb42fe6c1069381a66da04097ffc2 12c487ef73aa24237cc4e9c0e2a40204 7a3e56dbf4b75792017d682faf64ac07 8e296a067a37563370ded05f5a3bf3ec fc42a77fadd191300eaf962c6855cae6 f843fa60027f48abc13ed0aaedd40abf a2a551a6458a8de22446cc76d639a9e9 437b930db84b8079c2dd804a71936b5f 73a6fcb016535503154cecf09b787015 46b3931b9959c927df4fc65fdee94b07 6216ad1e3f72697aec0dc2200d82f8f6 88150d7d17390010ba6222de68bfafb5 a8f31166565051b003dd11c6103398e8 2bb3d86d95234affa7c5bd68c4bab606 af9dc3cd6ce29d560a1e4077694254d9 edc1e3ea2ca4939a55f1edf84a1fb85e 46b3931b9959c927df4fc65fdee94b07 0d149b90e7394297301c90191ae775f0 01b6e20344b68835c5ed1ddedf20d531 31c13f47ad87dd7baa2d558a91e0fbb9 be5d5d37542d75f93a87094459f76678 b0da275520918e23dd615e2a747528f1 0e66be14b86bd30bf4fc84357763b591 b515e18aa3fbe7d264d7ca5a95ef73e1 3ed13ae34836d8851e03375d303d526c 485c47a81eb6e3998ec05aca48eda184 c7561db7a418dd39b2201dfe110ab4a4 5ed33f7008771c9d49e3716aeaeca581 0cc175b9c0f1b6a831c399e269772661 8f11055ff49337f7558895e7c5d4a0cb 8cfb10d3dd0ae49a87320653cbfa587e cd73502828457d15655bbd7a63fb0bc8 01b6e20344b68835c5ed1ddedf20d531 31c13f47ad87dd7baa2d558a91e0fbb9 0cc175b9c0f1b6a831c399e269772661 3dc183cf4b0ea0778a1819994ad6cf25 62cd275989e78ee56a81f0265a87562e 10d5a3a599b10c194516c309db8bfb30 485c47a81eb6e3998ec05aca48eda184 b40b1cf86d64796a6694a5e2683f3b51 e1686078d1b60d351da5a87543a2a663 0cc175b9c0f1b6a831c399e269772661 3961a903097f9cb79f07dae17bac2f11 0701aa317da5a004fbf6111545678a6c 53d670af9bb16ea82e7ef41ee23ec6df 41536fd6c37da64938d6e85681c61b47 01b6e20344b68835c5ed1ddedf20d531 b42dad5453b2128a32f6612b13ea5d9f 6cfe61694ee1bb13ae719d47c2f80b7a 0cc175b9c0f1b6a831c399e269772661 8926a318f66d89d269e52613e99b2910 ea9f6aca279138c58f705c8d4cb4b8ce d55669822f1a8cf72ec1911e462a54eb 3189934774aa880fa7fbf8da8f9e446d c6b746b77cb20b963592c2b3da7333c2 03672bee7f58cd26136f083acaa24855 ed2b5c0139cec8ad2873829dc1117d50 376efb05c38df0cb8156da74dfb8c0ef 511a0919be6b81a37e667249af76e12c 12a032ce9179c32a6c7ab397b9d871fa 53d670af9bb16ea82e7ef41ee23ec6df b42dad5453b2128a32f6612b13ea5d9f ecae13117d6f0584c25a9da6c8f8415e 0cc175b9c0f1b6a831c399e269772661 821f03288846297c2cf43c34766a38f7 e81c4e4f2b7b93b481e13a8553c2ae1b b8a9f715dbb64fd5c56e7783c6820a61 54c84b40e9ff5a31472904a0cd2f0a17 2bb3d86d95234affa7c5bd68c4bab606 2c61ebff5a7f675451467527df66788d 31c13f47ad87dd7baa2d558a91e0fbb9 0e66be14b86bd30bf4fc84357763b591 b515e18aa3fbe7d264d7ca5a95ef73e1 52e5783fb2be233a7219dabe6d7f8056 3ed13ae34836d8851e03375d303d526c b23d181c3ca8e6b3f67d45b976b2ffe8 105b04b3fea399c8b299ca161a86af52 2bb3d86d95234affa7c5bd68c4bab606 4015e9ce43edfb0668ddaa973ebc7e87 0b8e35d8162a89f5aca0614e784683bb c0db7d4e3cbad2b18c767c659f448a11 01b6e20344b68835c5ed1ddedf20d531 d966a024a058e078e0b04ad6af5fd844 fa4ab7af8b6099464ba36ff325ba2090 a83b02ec9f0e3532de425567fd9540a7 4acb737e73778ed9dd3a9c522dfe9aad be5d5d37542d75f93a87094459f76678 cc935c5faf4c8f7a0468d7552a9b8138 03d59e663c1af9ac33a9949d1193505a 4b6f7d34a58ba399f077685951d06738 21582c6c30be1217322cdb9aebaf4a59 0e66be14b86bd30bf4fc84357763b591 31c13f47ad87dd7baa2d558a91e0fbb9 a2a551a6458a8de22446cc76d639a9e9 8fc42c6ddf9966db3b09e84365034357 21c622b1b0a8f2d68b4285b58d74ae17 8afc1e9bec810034dafd45c6854f1dd9 50324905c471f3d4d61f7d3f723f3644 a6d1bd4d500f7a7d3f10b245e8f829b0 88e3e665bc6731fbe80bd768963e41d1 0dfcf23e6610dd9ef6092e4cfedd7c07 9e925e9341b490bfd3b4c4ca3b0c1ef2 853eec398d0233112a6c69c791e9daef 03d59e663c1af9ac33a9949d1193505a 12a032ce9179c32a6c7ab397b9d871fa ad88adbdac50799a3bc8c02b217c6f76 449002f8bf705eba132a38364982f6e7 21582c6c30be1217322cdb9aebaf4a59 9e925e9341b490bfd3b4c4ca3b0c1ef2 821f03288846297c2cf43c34766a38f7 a2a551a6458a8de22446cc76d639a9e9 0cc175b9c0f1b6a831c399e269772661 aae6635e044ac56046b2893a529b5114 0a09ec17d545aca791493b213340d865 37598dad8f8805ce708ba8c4f67ce367 dd7536794b63bf90eccfd37f9b147d7f c337ed396d7dc01a8498201511e1f381 669c994bcaa0f330d69333c2371481f2 590f53e8699817c6fa498cc11a4cbe63 d07182257bce13d49a5c183864e4a277 be5d5d37542d75f93a87094459f76678 0cc175b9c0f1b6a831c399e269772661 741839f346d6e8126ae38ee76a96fd12 171c3db717b127e81069149541f421cd 4015e9ce43edfb0668ddaa973ebc7e87 4956c99c21a74b19fae2d2438173cfce d55669822f1a8cf72ec1911e462a54eb 6afa5a642f24f0857c8cc337996b4b0c 79c9e662a7f3c3d49ecc43f559de9424 be5d5d37542d75f93a87094459f76678 be68540dfa000a0fb38be40d32259215 3cec6a0f2339dfc715dc246466494054 37598dad8f8805ce708ba8c4f67ce367 50324905c471f3d4d61f7d3f723f3644 0cc175b9c0f1b6a831c399e269772661 925212d1624625aed9491413b4b7be05 c210361c9501ab821735f3ee2d684f0e 14b8f0494c6f1460c3720d0ce692dbca 8bf8854bebe108183caeb845c7676ae4 2c9cfc23e2116a3a55846157a62f8a8d 5ae9b7f211e23aac3df5f2b8f3b8eada a2a551a6458a8de22446cc76d639a9e9 7cef8a734855777c2a9d0caf42666e69 8f1e64eb83faaf38c66d2140cd4058c9 be5d5d37542d75f93a87094459f76678 f8fe68b4c4cba197efa9c8bbd45f144e 8a64d54837803f3211edf81ca0631195 dd7536794b63bf90eccfd37f9b147d7f 2d46f6286511bd2e22f9c02907274872 21582c6c30be1217322cdb9aebaf4a59 8fc42c6ddf9966db3b09e84365034357 5d9449e8d8508c7ee2cf746c86e5dde3 4015e9ce43edfb0668ddaa973ebc7e87 6c92285fa6d3e827b198d120ea3ac674 8a511f205dcfb340abe41c37d4f08ad1 3e31df05a1d1896559f81b9f34a25e5f 6465510d6d5bbaaaf3711ec6816c7f1c 8b7af514f25f1f9456dcd10d2337f753 e2eff6c2dafd909df8508f891b385d88 639bae9ac6b3e1a84cebb7b403297b79 67b0d7c16929369c0ce38e0d9b65c0cc addec426932e71323700afa1911f8f1c 46b3931b9959c927df4fc65fdee94b07 8fc42c6ddf9966db3b09e84365034357 fe5fe0415fc3e0ff4942d8454f363d2c 373801fc015468a9105aaca567a23f27 08da758e8196db6ab3a5587de3b89e58 a2a551a6458a8de22446cc76d639a9e9 29de3e94821901fa925b6a6aa4162eac 9efab2399c7c560b34de477b9aa0a465 9b6200fae5b7558861d0db1947c9045e f828955ca01f9c03a726acf5cc2dbe65 be5d5d37542d75f93a87094459f76678 e6ea0b3f88e22276c807f9f50199057b b42dad5453b2128a32f6612b13ea5d9f f6cb3e816496528d4187db53bc66567f 2992543c14d3b6b103fb1a08bbf4c5e5 0e66be14b86bd30bf4fc84357763b591 d8bfa0befdc22817d26fd936b12e3144 13b5bfe96f3e2fe411c9f66f4a582adf 8fc42c6ddf9966db3b09e84365034357 283ba8f8b211732ee15089d0b6144fce 2ac43aa43bf473f9a9c09b4b608619d3 8bf8854bebe108183caeb845c7676ae4 08da758e8196db6ab3a5587de3b89e58 be5d5d37542d75f93a87094459f76678 9e925e9341b490bfd3b4c4ca3b0c1ef2 821f03288846297c2cf43c34766a38f7 b8c2895957c4f7d90e500f5d8df67133 b3b8c36b183ca5767c7df7a16e194d92 18b049cc8d8535787929df716f9f4e68 93ab957b29bbd2564f1850110f29120d df9bcbd6578a1e49c06b7ec2874f9e23 13b5bfe96f3e2fe411c9f66f4a582adf 8fc42c6ddf9966db3b09e84365034357 7c5bd03b45176fa36f00aa91090dc0aa 8bf8854bebe108183caeb845c7676ae4 8fc42c6ddf9966db3b09e84365034357 6cd5fe80c8bff7d229b38215580f7618 60e46aeaed758964902dd7ae99858f03 a2a551a6458a8de22446cc76d639a9e9 faebf4f4bd7d5cec9f4d9ac102c79f86 01b6e20344b68835c5ed1ddedf20d531 6864f389d9876436bc8778ff071d1b6c bb9ffe617172d9041886df3fa804e58d b32d73e56ec99bc5ec8f83871cde708a 821f03288846297c2cf43c34766a38f7 be1ab1632e4285edc3733b142935c60b 0d149b90e7394297301c90191ae775f0 ed2b5c0139cec8ad2873829dc1117d50 8fc42c6ddf9966db3b09e84365034357 01085b4c0b163450ea2e001be05f102f be5d5d37542d75f93a87094459f76678 a1e6cd7f9480f01643245e0b648d9fbe 0d149b90e7394297301c90191ae775f0 8c00c19e66a7ba9d80bded9460cb1b41 8f888fedf6bd5ff7c93c6d76bb8dc21c 7d0db380a5b95a8ba1da0bca241abda1 29a5417a3ebd1c4bd3108d86a3e5b995 8fc42c6ddf9966db3b09e84365034357 51037a4a37730f52c8732586d3aaa316 07cc694b9b3fc636710fa08b6922c42b f970e2767d0cfe75876ea857f92e319b d5d74776e3ac5e9664d309474af670c2 dd7536794b63bf90eccfd37f9b147d7f c04cd38aeb30f3ad1f8ab4e64a0ded7b d5e1f5a7f2fe3dab21da19f1c04fbd2b 21582c6c30be1217322cdb9aebaf4a59 0d149b90e7394297301c90191ae775f0 e680afd37e4511a8cb3ce9f63168862a b42dad5453b2128a32f6612b13ea5d9f 8c00c19e66a7ba9d80bded9460cb1b41 458e279e54e5bf6062a88b37582d9b61 df3f079de6961496f0460dcfdbf9bca3 8fc42c6ddf9966db3b09e84365034357 54af60422aadb2c3de1d87ecde30700e f970e2767d0cfe75876ea857f92e319b cc935c5faf4c8f7a0468d7552a9b8138 addec426932e71323700afa1911f8f1c 0a8113941d35466c79218e83175665ef 7761127a460aaf290ed953098284dd1a 21582c6c30be1217322cdb9aebaf4a59 04e62011ea65eed4c2d72814b85e9155 7bfcadb5535fe8aad5032762b7bfe159 37ceb6d6d82107d712ffa3b7a377f603 0d149b90e7394297301c90191ae775f0 a2a551a6458a8de22446cc76d639a9e9 54001a500d828a703c688e4e791856f2 48bb6e862e54f2a795ffc4e541caed4d d55669822f1a8cf72ec1911e462a54eb 8fc42c6ddf9966db3b09e84365034357 f8026f3517dffb81dc6977c32bf64c01 01b6e20344b68835c5ed1ddedf20d531 600d6af0f320a021dc494cfa2daca569 755f85c2723bb39381c7379a604160d8 52e5783fb2be233a7219dabe6d7f8056 66270707424a729c3e557fceb03f45c9 be5d5d37542d75f93a87094459f76678 aa737ba1087d9ddad6ad2f4e73772804 be5d5d37542d75f93a87094459f76678 ca23ba209cc33678530392b7197fda4d 8eafc1d40ef7e064c2b96e368970cd42 a850c17cba5eb16b0d3d40a106333bd5 e886b5e8a9e6a8b1a306ac1efb18ec84 b971be0e2e7176b90d5501eca32a0226 3dcc74355a8d2485478adf6600fbd5f5 5ae9b7f211e23aac3df5f2b8f3b8eada b0dc139d151a9f0f69b462dd353870a8 d850f04cdb48312a9be171e214c0b4ee f0e166dc34d14d6c228ffac576c9a43c dd7536794b63bf90eccfd37f9b147d7f db8b923a9180129ba0052fbcd986f8b9 be1ab1632e4285edc3733b142935c60b 46b3931b9959c927df4fc65fdee94b07 8fc42c6ddf9966db3b09e84365034357 74d977422a49477c82306a292d2c0e69 6f8e26aa3b8056683ee8417d5c10cf9b 1bfd7f653591e54b5c9c4e428c65f608 695c6ae413c00446733d926ccadefd8b ad88adbdac50799a3bc8c02b217c6f76 097ba50a38e43fdaa3483bc4eb59b8a4 21582c6c30be1217322cdb9aebaf4a59 0d149b90e7394297301c90191ae775f0 a2a551a6458a8de22446cc76d639a9e9 741095e743a2fb68fd23fd7502be7399 b403d3f0efbf4cb850d2d543758cb57c 8d966b2253a917086c8604959e152243 c794b0d73c077a428731e829c922fd4a e6dbca21d4865b265ca2780205b19305 7d0db380a5b95a8ba1da0bca241abda1 f5d5342d7eb7326ba883af5f1cf88cf2 d55669822f1a8cf72ec1911e462a54eb 8fc42c6ddf9966db3b09e84365034357 7a7279a7df7ca8d455e6af972c8cb2dd be5d5d37542d75f93a87094459f76678 205ef3165a6f736f0835aa3bc9864c8d d55669822f1a8cf72ec1911e462a54eb 8fc42c6ddf9966db3b09e84365034357 5424f8684af255b007b0f82729a87c9a 37598dad8f8805ce708ba8c4f67ce367 0d149b90e7394297301c90191ae775f0 a2a551a6458a8de22446cc76d639a9e9 41b4e70e92c8f55983d1e83c05c2bbda ed2b5c0139cec8ad2873829dc1117d50 82772f24b5c02460447b7cd082a2ef56 4317a3cda98abb4551f9390f8d5c20a1 be5d5d37542d75f93a87094459f76678 8fc42c6ddf9966db3b09e84365034357 35f3675343000d6bb5f10ce451a571a4 8bf8854bebe108183caeb845c7676ae4 5e8a2485fe1afd338ff571da7e846cd3 fd99cadea9d8ef6a1ffcc52a2e3e8017 a2a551a6458a8de22446cc76d639a9e9 6f129a2e6e103ea342a085875931830b 21582c6c30be1217322cdb9aebaf4a59 0d149b90e7394297301c90191ae775f0 8062bd6d163d9365645f1d0af82287ec 13b5bfe96f3e2fe411c9f66f4a582adf 2063c1608d6e0baf80249c42e2be5804 8cd283d8b7bacc277f2bae5e26ce6d1e 038703c7230ae012e3c783ace1d09d64 8b7af514f25f1f9456dcd10d2337f753 4e1566f0798fb3d6f350720cacd74446 7afe399f1415b137d0962f82662fa9d4 8fc42c6ddf9966db3b09e84365034357 78a5eb43deef9a7b5b9ce157b9d52ac4 e81c4e4f2b7b93b481e13a8553c2ae1b a47e81c2341ae0c62dfd6afce9731ee9 639bae9ac6b3e1a84cebb7b403297b79 4015e9ce43edfb0668ddaa973ebc7e87 02641a6848cacbd6797069443c57cb38 13b5bfe96f3e2fe411c9f66f4a582adf 08da758e8196db6ab3a5587de3b89e58 d4579b2688d675235f402f6b4b43bcbf 511055d2f8867c4811807c07361cac1d 0cc175b9c0f1b6a831c399e269772661 f1dcdf766248c37e2ca7cc13a685653e 0461ebd2b773878eac9f78a891912d65 9e925e9341b490bfd3b4c4ca3b0c1ef2 04e62011ea65eed4c2d72814b85e9155

Re:Book Review, Reprint (0)

Anonymous Coward | more than 10 years ago | (#5782695)

How could you mod this down as Troll?! This is freakin hilarious! I guess one man's humor is another man's troll... :\

My new fangled encryption scheme (0)

Anonymous Coward | more than 10 years ago | (#5782546)

OK. Here is a challange.

My crypto algorithm is to take an arbitary irrational number(t), and a large number(z) as a secure key(this is symmetrical encryption, not public key). Then use the decimal expansion of t starting at position z as a one time pad for your message(M).

To decrypt the result(R) to retriev M, you need to know the key (t,z). eg. (t,z) might be (sqrt(2),1127304).

Anyone care to crack my encryption scheme?

Bonus points for readers if some people post messages encrypted with this scheme, with the key kept secret. And then see if anyone can break the encryption scheme and reveal the message M (without knowing the key).

My understanding is that this is possible, but I am only half convinced. Someone prove it for me.


I'm weak in cryptography (0)

Anonymous Coward | more than 10 years ago | (#5782827)

but it sounds to me like you're proposing OTP with a weird way of generating the pad. So instead of saying t and z are needed to decrypt the message, I believe it would be fine to say that the pad is needed to decrypt the message. Well, yeah -- it's OTP so you need the pad. t and z are just a handy way of generating the pad any time you want it. You could just as easily use pi or e or whatever. I'm not certain, but I believe the pad should be derived from a source we consider to be truly random, not some function.

Re:My new fangled encryption scheme (2, Interesting)

barfy (256323) | more than 10 years ago | (#5782846)

With at least your sample key, it is very easy to brute force this, I only have to try slightly over 1 million keys.

There are two problems with this, first is the relatively small number of Irrational numbers that are likely to be used (unless there is a large and easy to mine font of these I am not aware of).

The source of security of most encryption systems is that the "random streams" created by the initial key are extraordinarially large.

Changing the starting point in 1 given or even a handful of given streams, leaves you open to a simple sliding window against a previously stored length of strings.

It would become every more problematic the bigger the number Z (yours example would be trivially easy).

With a LARGE z it would take your encryption program a long time to get there (Except for PI), and the decryptor would also have a long time to get to the starting position.

Most professional decryptors are going to have most of the stream prestored, unless z is REALLY BIG).

I suspect that you can use really large Z numbers with t = PI and it would take a long time to brute force your answer. (This would be from the algorithm that lets you calculate any given position of PI).

Better choices for t. (0)

Anonymous Coward | more than 10 years ago | (#5783082)

I chose a very poor example of t. In practise, t can cover a huge range of numbers. There is no shortage of methods of producing irrational numbers from rational numbers. eg e^a, sin(a), tan(a), sqrt(a), cubert(a) etc. With a being things like 1012758, or 2.3145753 or whatever.

I am probably wrong, but it feels like there would be too many t's and z's to chose from for it to be brute forceable. But another part of my intuition says I know jack shit about encryption and am 99.999% sure my method is easily breakable.

Since everyone is posting their favorite books... (4, Interesting)

c64cryptoboy (310001) | more than 10 years ago | (#5782627)

Check out reviews of LOTS of cryptography books here [youdzone.com] -- most with an associated set of prerequisite book reading, math, and computer language skills.

another book on cryptology (3, Interesting)

roalt (534265) | more than 10 years ago | (#5782697)

One of the best (and accessible) books I've read about cryptology (from hieroglyphs to quantum computing) is The Code Book [amazon.com] by Simon Singh

It's fun reading!

Load More Comments
Slashdot Account

Need an Account?

Forgot your password?

Don't worry, we never post anything without your permission.

Submission Text Formatting Tips

We support a small subset of HTML, namely these tags:

  • b
  • i
  • p
  • br
  • a
  • ol
  • ul
  • li
  • dl
  • dt
  • dd
  • em
  • strong
  • tt
  • blockquote
  • div
  • quote
  • ecode

"ecode" can be used for code snippets, for example:

<ecode>    while(1) { do_something(); } </ecode>
Sign up for Slashdot Newsletters
Create a Slashdot Account