Browse Wiki & Semantic Web

Jump to: navigation, search
Http://dbpedia.org/resource/Kochanski multiplication
  This page has no properties.
hide properties that link here 
  No properties link to this page.
 
http://dbpedia.org/resource/Kochanski_multiplication
http://dbpedia.org/ontology/abstract Kochanski multiplication is an algorithm tKochanski multiplication is an algorithm that allows modular arithmetic (multiplication or operations based on it, such as exponentiation) to be performed efficiently when the modulus is large (typically several hundred bits). This has particular application in number theory and in cryptography: for example, in the RSA cryptosystem and Diffie–Hellman key exchange. The most common way of implementing large-integer multiplication in hardware is to express the multiplier in binary and enumerate its bits, one bit at a time, starting with the most significant bit, perform the following operations on an accumulator: 1. * Double the contents of the accumulator (if the accumulator stores numbers in binary, as is usually the case, this is a simple "shift left" that requires no actual computation). 2. * If the current bit of the multiplier is 1, add the multiplicand into the accumulator; if it is 0, do nothing. For an n-bit multiplier, this will take n clock cycles (where each cycle does either a shift or a shift-and-add). To convert this into an algorithm for modular multiplication, with a modulus r, it is necessary to subtract r conditionally at each stage: 1. * Double the contents of the accumulator. 2. * If the result is greater than or equal to r, subtract r. (Equivalently, subtract r from the accumulator and store the result back into the accumulator if and only if it is non-negative). 3. * If the current bit of the multiplier is 1, add the multiplicand into the accumulator; if it is 0, do nothing. 4. * If the result of the addition is greater than or equal to r, subtract r. If no addition took place, do nothing. This algorithm works. However, it is critically dependent on the speed of addition. Addition of long integers suffers from the problem that carries have to be propagated from right to left and the final result is not known until this process has been completed. Carry propagation can be speeded up with carry look-ahead logic, but this still makes addition very much slower than it needs to be (for 512-bit addition, addition with carry look-ahead is 32 times slower than addition without carries at all). Non-modular multiplication can make use of carry-save adders, which save time by storing the carries from each digit position and using them later: for example, by computing 111111111111+000000000010 as 111111111121 instead of waiting for the carry to propagate through the whole number to yield the true binary value 1000000000001. That final propagation still has to be done to yield a binary result but this only needs to be done once at the very end of the multiplication. Unfortunately the modular multiplication method outlined above needs to know the magnitude of the accumulated value at every step, in order to decide whether to subtract r: for example, if it needs to know whether the value in the accumulator is greater than 1000000000000, the carry-save representation 111111111121 is useless and needs to be converted to its true binary value for the comparison to be made. It therefore seems that one can have either the speed of carry-save or modular multiplication, but not both.e or modular multiplication, but not both.
http://dbpedia.org/ontology/wikiPageExternalLink http://www.nugae.com/encryption/fap4.htm + , https://web.archive.org/web/20180509134026/http:/www.nugae.com/encryption/fap4.htm +
http://dbpedia.org/ontology/wikiPageID 16807440
http://dbpedia.org/ontology/wikiPageLength 7437
http://dbpedia.org/ontology/wikiPageRevisionID 970774646
http://dbpedia.org/ontology/wikiPageWikiLink http://dbpedia.org/resource/Carry_look-ahead_adder + , http://dbpedia.org/resource/Carry_%28arithmetic%29 + , http://dbpedia.org/resource/Category:Modular_arithmetic + , http://dbpedia.org/resource/Diffie%E2%80%93Hellman_key_exchange + , http://dbpedia.org/resource/Accumulator_%28computing%29 + , http://dbpedia.org/resource/Carry-save_adder + , http://dbpedia.org/resource/Algorithm + , http://dbpedia.org/resource/Modular_exponentiation + , http://dbpedia.org/resource/Modular_arithmetic + , http://dbpedia.org/resource/Category:Cryptographic_algorithms + , http://dbpedia.org/resource/Number_theory + , http://dbpedia.org/resource/Montgomery_reduction + , http://dbpedia.org/resource/Cryptography + , http://dbpedia.org/resource/Binary_numeral_system + , http://dbpedia.org/resource/RSA_%28algorithm%29 +
http://dbpedia.org/property/wikiPageUsesTemplate http://dbpedia.org/resource/Template:Reflist + , http://dbpedia.org/resource/Template:Cite_web +
http://purl.org/dc/terms/subject http://dbpedia.org/resource/Category:Cryptographic_algorithms + , http://dbpedia.org/resource/Category:Modular_arithmetic +
http://purl.org/linguistics/gold/hypernym http://dbpedia.org/resource/Algorithm +
http://www.w3.org/ns/prov#wasDerivedFrom http://en.wikipedia.org/wiki/Kochanski_multiplication?oldid=970774646&ns=0 +
http://xmlns.com/foaf/0.1/isPrimaryTopicOf http://en.wikipedia.org/wiki/Kochanski_multiplication +
owl:sameAs http://www.wikidata.org/entity/Q6424798 + , http://yago-knowledge.org/resource/Kochanski_multiplication + , http://rdf.freebase.com/ns/m.0406x0y + , https://global.dbpedia.org/id/4peiY + , http://dbpedia.org/resource/Kochanski_multiplication +
rdf:type http://dbpedia.org/class/yago/WikicatCryptographicAlgorithms + , http://dbpedia.org/ontology/Software + , http://dbpedia.org/class/yago/Act100030358 + , http://dbpedia.org/class/yago/YagoPermanentlyLocatedEntity + , http://dbpedia.org/class/yago/PsychologicalFeature100023100 + , http://dbpedia.org/class/yago/Activity100407535 + , http://dbpedia.org/class/yago/Event100029378 + , http://dbpedia.org/class/yago/Algorithm105847438 + , http://dbpedia.org/class/yago/Procedure101023820 + , http://dbpedia.org/class/yago/Rule105846932 + , http://dbpedia.org/class/yago/Abstraction100002137 +
rdfs:comment Kochanski multiplication is an algorithm tKochanski multiplication is an algorithm that allows modular arithmetic (multiplication or operations based on it, such as exponentiation) to be performed efficiently when the modulus is large (typically several hundred bits). This has particular application in number theory and in cryptography: for example, in the RSA cryptosystem and Diffie–Hellman key exchange. For an n-bit multiplier, this will take n clock cycles (where each cycle does either a shift or a shift-and-add). This algorithm works. However, it is critically dependent on the speed of addition.ically dependent on the speed of addition.
rdfs:label Kochanski multiplication
hide properties that link here 
http://dbpedia.org/resource/Dadda_multiplier + , http://dbpedia.org/resource/Modular_exponentiation + , http://dbpedia.org/resource/Binary_multiplier + http://dbpedia.org/ontology/wikiPageWikiLink
http://en.wikipedia.org/wiki/Kochanski_multiplication + http://xmlns.com/foaf/0.1/primaryTopic
 

 

Enter the name of the page to start semantic browsing from.