text:
Patent US6862354 - Stream cipher encryption method and apparatus that can efficiently seek to ... - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inAdvanced Patent SearchPatentsA stream cipher encryption method and apparatus that can efficiently seek to arbitrary location in a keystream, and a method of generating an arbitrary segment of keystream....http://www.google.com/patents/US6862354?utm_source=gb-gplus-sharePatent US6862354 - Stream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a key streamAdvanced Patent SearchPublication numberUS6862354 B1Publication typeGrantApplication numberUS 09/675,570Publication dateMar 1, 2005Filing dateSep 29, 2000Priority dateSep 29, 2000Fee statusPaidAlso published asUS7095850Publication number09675570, 675570, US 6862354 B1, US 6862354B1, US-B1-6862354, US6862354 B1, US6862354B1InventorsDavid A. McGrew, Scott R. FluhrerOriginal AssigneeCisco Technology, Inc.Export CitationBiBTeX, EndNote, RefManPatent Citations (5), Non-Patent Citations (10), Referenced by (10), Classifications (16), Legal Events (4) External Links: USPTO, USPTO Assignment, EspacenetStream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a key stream
US 6862354 B1Abstract
A stream cipher encryption method and apparatus that can efficiently seek to arbitrary location in a keystream, and a method of generating an arbitrary segment of keystream.
1. A method of automatically generating a keystream segment of an arbitrary location of a complete keystream of an additive stream cipher, the method comprising the computer-implemented steps of:
receiving a location value that identifies a location of the keystream segment within the complete keystream; creating and storing a state value for a leaf node of a balanced binary tree, wherein the leaves of the tree represent the complete keystream and the leaf node represents the keystream segment at the location, by a preorder traversal of the tree from root node to the leaf node wherein a leftward tree branch transition comprises computing a first non-linear function and a rightward tree branch transition comprises computing a second non-linear function; creating and storing the keystream segment by applying a third function to the state value of the leaf node. 2. The method as recited in claim 1, wherein each leaf node stores m bits of state information, wherein m is a multiple of twelve.
3. The method as recited in claim 1, further comprising the steps of creating and storing a key for use by the first non-linear function and the second non-linear function, wherein the key comprises a table of key dependent pseudorandom values.
4. The method as recited in claim 1, further comprising the steps of creating and storing, once and at a time prior to receiving the location value, a key for use by the first non-linear function and the second non-linear function, wherein the key comprises a table of key dependent pseudorandom values.
5. The method as recited in claim 1, further comprising the steps of creating and storing a key in the form of a plurality of pseudo-randomly selected invertible functions, wherein each of the invertible functions maps an 8-bit portion of the state value to an 8-bit quantity for use as a substitute portion of the state value.
6. A method as recited in claim 1, wherein the pseudo-randomly selected invertible functions are stored in a plurality of substitution tables, and wherein the plurality of substitution tables are generated by:
setting each of the plurality of substitution tables equal to the identity function; for each element of each of the plurality of substitution tables, swapping said element with another element of such table in a key-dependent manner, and also performing the same swapping operation on each table that has been previously been generated. 7. A method as recited in claim 1, further comprising the steps of creating and storing the balanced binary tree by creating and storing a stack of h elements wherein the ith element of said stack stores a state datum for the ith node on a path from a root node of the tree to the leaf node.
8. A method as recited in claim 7, wherein the step of creating and storing a state value for a leaf node comprises the steps of computing and storing a state value for the leaf node that is unique with respect to any other state value that is computed at any other time for any other leaf node of the tree.
creating and storing m=3n bits of state information in each leaf node comprising a concatenation of three n bit quantities z|y|x, wherein n is a multiple of four; computing the first non-linear function a and the second non-linear function b as the composition of a diffusion function d with the nonlinear “confusion” functions ƒ and g, wherein a ƒ∘d and b=g∘d and wherein ƒ(z|y|x)=2z|S(R(S(R(y))))|L(S(L(S(x)))) g(z|y|x)=2z+1|L(S(L(S(y))))|S(R(S(R(x)))) d(z|y|x)=z|x+y+z|2x+y+z c(z|y|x)=x⊕y wherein integer addition modulo two is denoted as +, bitwise exclusive-or is denoted as ⊕, and bitwise complementation is denoted as ; wherein the R denotes rotation by n/4 bits to in a direction of a least significant bit and L denotes rotation by n/4 bits in a direction of a most significant bit; and wherein a nonlinear function S comprises a lookup in a key-dependent substitution table. 10. The method as recited in claim 1, wherein the third function comprises computing a linear reduction of 2n bits of the state value to n bits thereof.
11. A method as recited in claim 9, wherein the third function comprises computing a bitwise Boolean exclusive OR of x and y.
12. A method as recited in claim 9, further comprising the steps of creating and storing the substitution table S by selecting four invertible functions and storing the four invertible functions in a concatenated form.
13. A method as recited in claim 9, further comprising the steps of computing functions ƒ and g in seven instructions of a central processing unit that can issue two instructions simultaneously, by using five registers to store values of x, y, z, a temporary variable, and a pointer to the substitution table S.
14. A method as recited in claim 9, wherein the substitution table S comprises an array of key dependent pseudorandom integer values.
15. A method as recited in claim 9, wherein the substitution table S comprises an array of 256 key dependent pseudorandom 32-bit unsigned integer values.
16. A method of enciphering a plaintext using at least one keystream segment at an arbitrary location of a complete keystream, the method comprising the computer-implemented steps of:
receiving a segment of a plaintext; receiving a location value that identifies a location of the keystream segment within the complete keystream; creating and storing a state value for a leaf node of a balanced binary tree, wherein the leaves of the tree represent the complete keystream and the leaf node represents the keystream segment at the location, by a preorder traversal of the tree from root node to the leaf node wherein a leftward tree branch transition comprises computing a first non-linear function and a rightward tree branch transition comprises computing a second non-linear function; creating and storing the keystream segment by applying a third function to the state value of the leaf node; enciphering the segment of the plaintext by combining the keystream segment with the segment of the plaintext using a Boolean exclusive OR operation to result in creating and storing a segment of ciphertext. 17. A method of encrypting an ordered plurality of packets of a network communication link using at least one keystream segment at an arbitrary location of a complete keystream, the method comprising the computer-implemented steps of:
receiving a packet from among the plurality of packets; determining a location value that represents a relative location of the packet among the plurality of packets; creating and storing a state value for a leaf node of a balanced binary tree, wherein the leaves of the tree represent the complete keystream and the leaf node represents a keystream segment at the relative location, by a preorder traversal of the tree from root node to the leaf node wherein a leftward tree branch transition comprises computing a first non-linear function and a rightward tree branch transition comprises computing a second non-linear function; creating and storing the keystream segment by applying a third function to the state value of the leaf node; enciphering the packet by combining the keystream segment with data of the packet using a Boolean exclusive OR operation to result in creating and storing enciphered packet data. 18. A computer-readable medium carrying one or more sequences of instructions for automatically generating a keystream segment of an arbitrary location of a complete keystream of an additive stream cipher, which instructions, when executed by one or more processors, cause the one or more processors to carry out the steps of:
receiving a location value that identifies a location of the keystream segment within the complete keystream; creating and storing a state value for a leaf node of a balanced binary tree, wherein the leaves of the tree represent the complete keystream and the leaf node represents the keystream segment at the location, by a preorder traversal of the tree from root node to the leaf node wherein a leftward tree branch transition comprises computing a first non-linear function and a rightward tree branch transition comprises computing a second non-linear function; creating and storing the keystream segment by applying a third function to the state value of the leaf node. 19. A computer readable medium as recited in claim 18, wherein the third function comprises computing a linear reduction of 2n bits of the state value to n bits thereof.
20. A computer-readable medium as recited in claim 18, comprising further Sequences of instructions which, when executed by the one or more processors, cause the one or more processors to perform the steps of creating and storms a key for use by the first non-linear function and the second non-linear function, wherein the key comprises a table of key dependent pseudorandom values.
21. A computer-readable medium as recited in claim 18, comprising further sequences of instruction which, when executed by the one or more processors, cause the one or more processors to perform the steps of creating and storing, once and at a time prior to receiving the location value, a key for use by the first non-linear sanction and the second non-linear function, wherein the key comprises a table of key dependent pseudonym values.
22. A computer-readable medium as recited in claim 18, comprising further sequences of instructions which, when executed by the one or more processors, cause the one or more processors to perform the steps of creating and storing a key in the form of a plurality of pseudo-randomly selected invertible functions, wherein each of the invertible functions maps an 8-bit portion of the state value to an 8-bit quantity for use as a substitute portion of the state value.
23. A computer readable medium as recited in claim 18 wherein the pseudo-randomly selected invertible functions are stored in a plurality of substitution tables, and wherein the plurality of substitution tables are generated by;
setting each of the plurality of substitution tables equal to the identity function; for each element of each of the plurality of substitution tables, swapping said element with another element of such table in a key-dependent manner, and also performing the same swapping operation on each table that has been previously been generated. 24. A computer readable medium as recited in claim 18, wherein each leaf node stores m bits of state information, wherein m is a multiple of twelve.
25. A computer-readable medium as recited in claim 18, comprising further sequences of instructions which, when executed by the one or more processors, cause the one or more processors to perform the steps of creating and storing the balanced binary tree by creating and storing a stack of h elements wherein the ith element of said stack stores a state datum for the ith node on a path from a root node of the tree to the leaf node.
26. A computer readable medium as recited in claim 25, comprising further sequences of instructions which, when executed by the one or more processors, cause the one or more processors to perform the steps of creating and storing a state value far a leaf node comprises the steps of computing and storing a state value for the leaf node that is unique with respect to any other state value that is computed at any other time for any other leaf node of the tree.
27. A computer-readable medium as recited in claim 18, comprising further sequences of instructions which, when executed by the one or wore processors, cause the one or more processors to perform the steps of:
creating and storing m=3n bits of state information in each leaf node comprising a concatenation of three n bit quantities z|y|x, wherein n is a multiple of four computing the first non-linear function a and the second non-linear function b as the composition of a diffusion function d with the nonlinear “confusion” functions ƒ and g, wherein a=ƒ∘d and b=g∘d and wherein ƒ(z|y|x)=2z|S(R(S(R(y))))|L(S(L(S(x)))) g(z|y|x)=2z+1|L(S(L(S(y))))|S(R(S(R(x)))) c(z|y|x)=x⊕y wherein integer addition modulo two is denoted as +, bitwise exclusive-or is denoted ⊕, and bitwise complementation is denoted as ; wherein the R denotes rotation by n/4 bits to in a direction of a least significant bit and L denotes rotation by n/4 bits in a direction of a most significant bit; and wherein a nonlinear function S comprises a lookup in a key-dependent substitution table. 28. A computer-readable medium as recited in claim 27, wherein the third function comprises computing a bitwise Boolean exclusive OR of x and y.
29. A computer-readable medium as recited in claim 27, comprising further sequences of instructions which, when executed by the one or more processors, cause the one or more processors to perform the steps of creating and storing the substitution table S by selecting four invertible functions and storing the four invertible functions in a concentrated form.
30. A computer-readable medium as recited in claim 27, comprising further sequences of instructions which, when executed by the one or more processors, cause the one or mote processors to perform the steps of computing functions ƒ and g in seven instructions of a central processing unit that can issue two instructions simultaneously, by using five registers to store values of x, y, z, a temporary variable, and a pointer to the substitution table S.
31. A computer readable medium as recited in claim 27, wherein the substitution table S comprises an array of key dependent pseudorandom integer values.
32. A computer-readable medium as recited in claim 27, wherein the substitution table S comprises an array of 256 key dependant pseudorandom 32-bit unsigned integer values.
33. An apparatus for automatically generating a keystream segment of an arbitrary location of a complete keystream of an additive stream cipher, comprising:
means for receiving a location value that identifies a location of the keystream segment within the complete keystream; means for creating and storing a state value for a leaf node of a balanced binary tree, wherein the leaves of the tree represent the complete keystream and the leaf node represents the keystream segment at the location, by a preorder traversal of the tree from root node to the leaf node wherein a leftward tree branch transition comprises computing a first non-linear function and a rightward tree branch transition comprises computing a second non-linear function; means for creating and storing the keystream segment by applying a third function to the state value of the leaf node. 34. An apparatus as recited in claim 33, further comprising means for creating and storing a key for use by the first non-linear function and the second non-linear function, wherein the key comprises a table of key dependant pseudorandom values.
35. An apparatus as recited in claim 33, further comprising means for creating and storing, once and at a time prior to receiving the location value, a key for use by the first non-linear function and the second non-linear function, wherein the key comprises a table of key dependent pseudorandom values.
36. An apparatus as recited in claim 33, further comprising means for creating and storing a key in the form of a plurality of pseudo-randomly selected invertible functions, wherein each of the invertible functions mans an 8-bit portion of the state value to an 8-bit quantity for use as a substitute portion of the state value.
37. An apparatus as recited in claim 33 wherein the pseudo-randomly selected invertible functions are stored in a plurality of substitution tables, and wherein the plurality of substitution tables are generated by means for;
setting each of the plurality of substitution tables equal to the identity function: for each element of each of the plurality of substitution tables swapping said element with another element of such table in a key-dependant manner, and also performing the same swapping operation on each table that has been previously been generated. 38. An apparatus as recited in claim 33, wherein the third function comprises computing a linear reduction of 2n bits of the state value n bits thereof.
39. An apparatus as recited in claim 33, wherein each leaf node stores m bits of state information, wherein m is a multiple of twelve.
40. An apparatus as recited in claim 33, further comprising creating and storing the balanced binary tree by creating and storing a stack of h elements wherein the ith element of said stack stores a state datum for the ith node on a path from a root node of the tree to the leaf node.
41. An apparatus as recited in claim 40, further comprising creating and storing a state value for a leaf node comprises the steps of computing and storing a state value for the leaf node that is unique with respect to any other state value that is commuted as any other time for any other leaf node of the tree.
42. An apparatus as recited in claim 33 further comprising:
means for creating and storing m-3n bits of state information in each leaf node comprising a concatenation of three n bit quantities z|y|x, wherein n is a multiple of four; means for computing the first non-linear function a and the second non-linear function b as the composition of a diffusion function d with the nonlinear “confusion” functions ƒ and g, wherein a=ƒ∘d and b=g∘d and wherein ƒ(z|y|x)=2z|S(R(S(R(y))))|L(S(L(S(x)))) g(z|y|x)=2z+|L(S(L(S(y))))|S(R(S(R(x)))) d(z|y|x)=z|x+y+z|2x+y+z c(z|y|x)=x⊕y wherein integer addition module two is denoted as +, bitwise exclusive or is denoted as ⊕, and bitwise complementation is denoted as ; wherein the R denotes rotation by n/4 bits to in a direction of a least significant bit and L denotes rotation by n/4 bits in a direction of a most significant bit; and wherein a nonlinear function S comprises a lookup in a key-dependent substitution table. 43. An apparatus as recited in claim 42, wherein the third function comprises computing a bitwise Boolean exclusive OR of x and y.
44. An apparatus as recited in claim 42, further comprising means for creating and storing the substitution table S by selectins four invertible functions and storing the four invertible functions in a concatenated form.
45. An apparatus as recited in claim 42, further compromises means for computing functions ƒ and g in seven instructions of a central processing unit that can issue two instructions simultaneously, by using five registers to store values of x, y, z, a temporary variable, and a red pointer to the substitution table S.
46. An apparatus as recited in claim 42, wherein the substitution table S comprises an array of key dependent pseudorandom integer values.
47. An apparatus as recited in claim 42 wherein the substitution table S comprises an array of 256 key dependent pseudorandom 32-bit unsigned integer values.
48. An apparatus for automatically generating a keystream segment of an arbitrary location of a complete keystream of an additive stream cipher, comprising:
a network interface that is coupled to the data network for receiving one or more packet flows therefrom; a processor; one or more stored sequences of instructions which, when executed by the processor, cause the processor to carry out the steps of: receiving a location value that identifies a location of the keystream segment within the complete keystream; creating and storing a state value for a leaf node of a balanced binary tree, wherein the leaves of the tree represent the complete keystream and the leaf node represents the keystream segment at the location, by a preorder traversal of the tree from root node to the leaf node wherein a leftward tree branch transition comprises computing a first non-linear function and a rightward tree branch transition comprises computing a second non-linear function; creating and storing the keystream segment by applying a third function to the state value of the leaf node. 49. An apparatus as recited in claim 48, wherein each leaf node stores m bits of state information, wherein m is a multiple of twelve.
50. An apparatus as recited in claim 48, wherein the third function comprises computing a linear reduction of 2n bits of the state value to n bits thereof.
51. An apparatus as recited in claim 48, wherein the sequences of instructions comprise further sequences of instructions which when executed by the processor, cause the processor to perform the steps of creating and storing a key for use by the first non-linear function and the second non-linear function wherein the key comprises a table of key dependent pseudorandom values.
52. An apparatus as recited in claim 48, wherein the sequences of instructions comprise further sequences of instructions which, when executed by the processor, cause the processor to perform the steps of creating and storing, once and at a time prior to receiving the location value, a key for use by the first non-linear function and the second non-linear function, wherein the key comprises a table of key dependent pseudorandom values.
53. An apparatus as recited in claim 48, wherein the sequences of instructions comprise further sequences of instructions which, when executed by the processor, cause the processor to perform the steps of creating and storing a key in the form of a plurality of pseudo-randomly selected invertible functions, wherein each of the invertible functions maps an 8-bit portion of the state value to an 8-bit quantity for use as a substitute portion of the state value.
54. An apparatus as recited in claim 48, wherein the pseudo-randomly selected invertible functions are stored in a plurality of substitution tables, and wherein the plurality of substitution tables are generated by instructions for performing the steps of:
setting each of the plurality of substitution tables equal to the identity function; for each element of each of the plurality of substitution tables, swapping said element with another element of such table in a key-dependant manner, and also performing the same swapping operation on each table that has been previously been generated. 55. An apparatus as recited in claim 48, wherein the sequences of instructions comprise further sequences of instructions which, when executed by the processor, cause the processor to perform the steps of creating and storing the balanced binary tree by creating and storing a stack of h elements wherein the ith element of said stack stores a state datum for the ith node on a path from a root node of the tree to the leaf node.
56. An apparatus as recited in claim 55, wherein the sequences of instructions comprise further sequences of instructions which, when executed by the processor, cause the processor to perform the steps of creating and storms a state value for a leaf node comprises the steps of computing and storms a state value for the leaf node that is unique with respect to any other state value that is computed at any other time for any other leaf node of the tree.
57. An apparatus as recited in claim 48, wherein the sequences of instructions comprise further sequences of instructions which, when executed by the processor, cause the processor to perform the steps;
creating and storing m=3n bits of state information in each leaf node comprising a concatenation of three n bit quantities z|y|x, wherein n is a multiple of four: computing the first non-linear function a and the second non-linear function b as the composition of a diffusion function d with the nonlinear “confusion” functions t and g, wherein a=ƒ∘d and b=g∘d and wherein ƒ(z|y|x)=2z|S(R(S(R(y))))|L(S(L(S(x)))) g(z|y|x)=2z+1|L(S(L(S(y))))|S(R(S(R(x)))) d(z|y|x)=z|x+y+z|2x+y+z c(z|y|x)=x⊕y wherein integer addition modulo two is denoted as +, bitwise exclusive-or is denoted as ⊕, and bitwise complementation is denoted as ; wherein the R denotes rotation by n/4 bits to in a direction of a least significant bit and L denotes rotation by n/4 bits in a direction of a most significant bit; and wherein a nonlinear function S comprises a lookup in a key-dependent substitution table. 58. An apparatus as recited in claim 57, wherein the third function comprises computing a bitwise Boolean exclusive OR of x and y.
59. An apparatus as recited in claim 57, wherein the sequences of instructions comprise further sequences of instructions which, when executed by the processor, cause the processor to perform the steps of creating and storing the substitution table S by selecting four invertible functions and storing the four invertible functions in a concatenated form.
60. An apparatus as recited in claim 57, wherein the sequences of instructions comprise further sequences of instructions which, when executed by the processor, cause the processor to perform the steps of computing functions ƒ and g in seven instructions of a central processing unit that can issue two instructions simultaneously, by using five resisters to store values of x, y, z, a temporary variable, and a pointer to the substitution table S.
61. An apparatus as recited in claim 57, wherein the substitution table S comprises an array of key dependent pseudorandom integer values.
62. An apparatus as recited in claim 57, wherein the substitution table S comprises an array of 256 key dependent pseudorandom 32-bit unsigned integer values.
The present invention generally relates to cryptology. The invention relates more specifically to a stream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a keystream, including a method of generating an arbitrary segment of keystream for use by a stream cipher in encryption or decryption.
Block ciphers such as the Data Encryption Standard (DES) are popularly used for encryption of computer communications. However, empirical evidence indicates that stream ciphers are faster than block ciphers at equivalent security levels. For example, in practical evaluation, the stream ciphers RC4 and SEAL have been determined to be significantly faster than any secure block cipher when implemented on general-purpose computer processors. Further, RC4 and SEAL have survived years of scrutiny by cryptanalysts. SEAL is described in U.S. Pat. No. 5,454,039; U.S. Pat. No. 5,675,652; U.S. Pat. No. 5,835,597; Rogaway, P. and Coppersmith, D., “A Software-Optimized Encryption Algorithm”, Proceedings of the 1994 Fast Software Encryption Workshop, Lecture Notes in Computer Science, Volume 809, Springer-Verlag, 1994, pp. 56-63; Rogaway, P. and Copphersmith, D., “A Software-Optimized Encryption Algorithm”, Journal of Cryptology, Volume 11, Number 4, Springer-Verlag, 1998, Pages 273-287, and at the document seal-abstract.html in the directory/˜rogaway/papers/ of the “www.cs” subdomain of the Internet domain ucdavis.edu. Both SEAL and RC4 are discussed in Schneier.
Unfortunately, many stream ciphers have a significant limitation; most cannot efficiently seek to an arbitrary location in their keystream. In this context, seeking to an arbitrary location in the keystream means generating a segment of keystream that is conceptually located an arbitrary number of bits ahead of that portion of keystream that would be generated by ordinary operation of the keystream in its then-current state. This capability is required for numerous practical applications. For example, in a communications protocol that uses unreliable transport, there is no guarantee that data packets of a particular flow will arrive in order, or arrive at all. Examples of such protocols include Internet Protocol (IP), UDP, and RTP. Such protocols commonly experience loss and reorder of packets in practice. Therefore, for a flow that includes successive packets a, b, and c, a cipher may need to encrypt packet c before it encrypts packet b. A stream cipher can be used to provide privacy for data communicated using such protocols, if the cipher can seek to the proper location in the keystream for packet c based on a sequence number.
The foregoing needs, and other needs and objects that will become apparent for the following description, are achieved in the present invention, which comprises, in one aspect, a method of automatically generating a keystream segment of an arbitrary location of a complete keystream of an additive stream cipher. A location value that identifies a location of the keystream segment within the complete keystream is received. A state value for a leaf node of a balanced binary tree is created and stored, wherein the leaves of the tree represent the complete keystream and the leaf node represents the keystream segment at the location, by a traversal of the tree from root node to the leaf node wherein a leftward tree branch transition comprises computing a first non-linear function and a rightward tree branch transition comprises computing a second non-linear function. The keystream segment is created and stored by applying a third function to the state value of the leaf node. The entire keystream can be efficiently computed, in order, via a preorder traversal of the tree.
FIG. 2 is a computational graph diagram that illustrates one embodiment of a function c∘ƒ.
FIG. 5 is a computational graph diagram that illustrates one embodiment of a function ƒ∘d.
FIG. 6 is a computational graph diagram that illustrates one embodiment of a function g∘d.
A stream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a keystream, and a method of generating an arbitrary segment of keystream, are described. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide a thorough understanding of the present invention. It will be apparent, however, to one skilled in the art that the present invention may be practiced without these specific details. In other instances, well-known structures and devices are shown in block diagram form in order to avoid unnecessarily obscuring the present invention.
GF(2^m)−>GF(2^m) a and a right branch is computed using the nonlinear function
GF(2^m)−>GF(2^m) a The outputs of the cipher are computed by applying the function
GF(2^m)−>GF(2^r) a to the state information of the leaf nodes, which maps the n internal bits to an output of size r. Accordingly, in FIG. 1B, leftward transitions from node to node have reference label a to indicate that such transitions involve computing function a. Similarly, rightward transitions from node to node have reference label b to indicate that such transitions involve computing function b. Exit paths from leaf nodes 106 have reference label c to indicate that such paths involve computing function c.
Generating a complete keystream in order is done by a preorder traversal of the entire tree, starting at the root. A binary tree with height h contains 2h−1 nodes, 2h−1 leaves, and 2h−1−2 edges. In this context, a tree with one node is defined as having height one. Each edge is computed exactly once in a traversal of the tree. Therefore, the present approach can generate keystream at a rate of approximately: r2 h - 1 R c 2 h - 1 + R ab ( 2 h - 2 ) ≅ r R c + 2 R ab where Rc is the rate at which the function c can be evaluated, and Rab is the average rate at which the functions a and b can be evaluated.
Accordingly, in one embodiment, m is restricted to being a multiple of twelve, because of the internal structure of the functions a and b. In the description herein, x, y and z denote n bit quantities, and each node 104, 106 of tree 100 has m=3n bits of state denoted as z|y|x, where the symbol | denotes concatenation, and n is a multiple of four.
In one embodiment, the state contained by each node 102, 104, 106 of tree 100 contains a unique node number to ensure that two distinct nodes cannot have the same state. The node number is denoted as z, and counted as part of the state of the node to which it corresponds. The node number of the root node 102 is defined as one. If the node number of a node is z, that of its left child is 2z and that of its right child is 2z+1. Functions of the cipher use substitution, rotation, and addition modulo 2n. The “filter” function c is defined as the linear reduction of 2n bits to 2 bits. The branching functions a and b are defined as the composition of a diffusion function d with the nonlinear “confusion” functions ƒ and g. Thus,
a=ƒ∘d and b=g∘d The definitions of factions ƒ, g, d, and c are
ƒ(z|y|x)=2z|S(R(S(R(y))))|L(S(L(S(x)))) g(z|y|x)=2z+1|L(S(L(S(y))))|S(R(S(R(x)))) d(z|y|x)=z|x+y+z|2x+y+z c(z|y|x)=x⊕y where integer addition module two is denoted as +, bitwise exclusive-or is denoted as ⊕, and bitwise complementation is denoted as . The functions R and L indicate rotation by n/4 bits and to the right and left, respectively (where “right” means in the direction of the least significant bit). The nonlinear function S is implemented as a key-dependent substitution table.
The filter function c is a bitwise exclusive or of x and y. The composition of c with ƒ and g is shown in FIG. 2, FIG. 3. Specifically, FIG. 2 is a computational graph diagram that illustrates one embodiment of the function c∘f, as indicated by reference numeral 200, and FIG. 3 is a computational graph diagram that illustrates one embodiment of the function c∘g, designated by reference numeral 300. FIG. 4 is a computational graph diagram that illustrates a concatenation of FIG. 2 and FIG. 3 (reference numeral 400). FIG. 5 is a computational graph diagram that illustrates one embodiment of the function ƒ∘d (reference numeral 500). FIG. 6 is a computational graph diagram that illustrates one embodiment of the function g∘d, as indicated by reference numeral 600.
In FIG. 2, FIG. 3, FIG. 4, FIG. 5, and FIG. 6, inputs X0, X1, X2, X3 represent the bytes of x, where X0 is the least significant byte, X1 is the second least significant, and so on. Similarly, inputs Y0, Y1, Y2, Y3 represent the bytes of variable y, from least significant to next least significant, and inputs Z0, Z1, Z2, Z3 represent bytes of variable z. The function S depends only on the lowest n/4 bits of its argument, and can be viewed as four component functions S0, S1, S2, S3, as indicated by like labeled blocks in FIG. 2, FIG. 3, FIG. 4, FIG. 5, and FIG. 6. A key setup approach is defined such that component functions S0, S1, A2, S3 are invertible.
FIG. 2 and FIG. 3 illustrate how the output of the cipher disclosed herein is derived from the state of the leaf nodes using one embodiment off, g, and c. The structures off, g, and c are optimized, in this embodiment, to resist up and down attacks. Referring to FIG. 3, the variables at the top and bottom (z, w) represent two adjacent n-bit outputs of the cipher. The state at the middle of the network, represented by x, y, is the output of the function d for each of the leaves.
The manner in which the functions ƒ and g use a substitution table is similar to that of the block cipher WAKE, which is described in B. Schneier, supra, at 400,. However, in the approach described herein, greater parallelism and lower register usage is achieved by using the substitution table to modify the value of its argument.
Key setup consists of generating four invertible functions, and storing them in concatenated form in a substitution table. The substitution operation herein maps a single variable x to x ⊕ s(x), for some substitution table s that depends only on the lowest 8 bits of x. Thus, invertibility requires that the function mapping the lowest 8 bits of x to lowest 8 bits of x ⊕ s(x) be invertible. This is achieved by pseudorandomly selecting an invertible function mapping 8 bits to 8 bits, then composing that function with the bitwise exclusive-or function. Invertible functions are pseudorandomly generated by swapping elements at random in the table, an approach similar to that of the RC4 next-state function.
Detailed pseudocode for this method follows, in which S0, S1, S2, and S3 are the substitution tables described above, ‘key’ represents the raw key, and i, j, k, and ‘index’ are integers between zero and 255. The symbol % denotes the modulus operator. The number of bytes in a key is represented here by the symbol bytes in key, which is a parameter of this method.
for i from 0 to 255 set S3[i] to S2[i] set S2[i] to S1[i] set S1[i] to S0[i] set S0[i] to i endfor set index to j for k from 1 to num_passes for i from 0 to 255 set index to index+(key[i % bytes_in_key]+S0[i]) % 255 set tmp to S0[i] set S0[i] to S0[index] set S0[index] to tmp set tmp to S1 [i] set S1[i] to S1[index] set S1[index] to tmp set tmp to S2[i] set S2[i] to S2[index] set S2[index] to tmp set tmp to S3[i] set S3[i] to S3[index] set S3[index] to tmp endfor endfor endfor
The functions ƒ and g can each be computed in seven instructions on a general purpose CPU that can issue two instructions simultaneously, using five registers (holding x, y, z, a temporary variable, and a pointer to the substitution table). The theoretical encryption rate is about fifteen cycles per byte (using two execution units).
The invention is related to the use of computer system 700 for performing a stream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a keystream, and a method of generating an arbitrary segment of keystream. According to one embodiment of the invention, performing a stream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a keystream, and a method of generating an arbitrary segment of keystream, are provided by computer system 700 in response to processor 704 executing one or more sequences of one or more instructions contained in main memory 706. Such instructions may be read into main memory 706 from another computer-readable medium, such as storage device 710. Execution of the sequences of instructions contained in main memory 706 causes processor 704 to perform the process steps described herein. In alternative embodiments, hard-wired circuitry may be used in place of or in combination with software instructions to implement the invention. Thus, embodiments of the invention are not limited to any specific combination of hardware circuitry and software.
Computer system 700 can send messages and receive data, including program code, through the network(s), network link 720 and communication interface 718. In the Internet example, a server 730 might transmit a requested code for an application program through Internet 728, ISP 726, local network 722 and communication interface 718. In accordance with the invention, one such downloaded application provides for carrying out a stream cipher encryption method and apparatus that can efficiently seek to arbitrary locations in a keystream, and a method of generating an arbitrary segment of keystream.
Accordingly, a fast stream cipher that can efficiently seek to arbitrary locations in its keystream has been described. Unlike RC4, which cannot seek at all, and SEAL, which can seek only to a limited number of locations in the keystream, the approach described herein can seek to any location in the keystream. The cipher can efficiently seek to arbitrary locations in its keystream despite the fact that it does not use a linear state update function. This property is apparent from the architecture of the cipher in which its computation graph may be represented by a tree. Keystream can be efficiently generated using a preorder traversal of the tree, and the tree structure lends itself to parallelization.
The ANSI C source code for the functions ƒ, g, d and h is given below, in which each function is implemented using a macro. In these definitions, a and b are 32-bit unsigned integers (or unit32_ts, in POSIX terminology), and the function F is represented by the array F[256] of 32-bit unsigned integers. The macros ROT8 and ROT24 implement rotation by eight bits and twenty-four bits, respectively, where the direction of rotation is towards the most significant bit.
#define ROT8(x) (((x) << 8) | ((x) >> 24)) #define ROT24(x) (((x) << 24) | ((x) >> 8)) #define f(x, y, z, F) ( \ z += z, \ y = ROT24(y), \ x ^= F[x & 0xFF], \ y ^= F[y & 0xFF], \ y = ROT24(y), \ x = ROT8(x), \ x ^= F[x & 0xFF], \ y ^= F[y & 0xFF], \ x = ROT8(x) \ ) #define g(x, y, z, F) ( \ z += (z+1), \ x = ˜x; \ x = ROT24(x), \ x ^= F[x & 0xFF], \ y ^= F[y & 0xFF], \ x = ROT24(x), \ y = ROT8(y), \ x ^= F[x & 0xFF], \ y ^= F[y & 0xFF], \ y = ROT8(y) \ ) #define d(x, y, z) ( \ x += z, \ y += x, \ x += y \ ) #define h(a, b) (a ^ b) The source code to produce the jth word of output (that is, bytes 4 j through 4 j+3) is given below, where j is represented by the variable leaf_num.
for (k= 0; k<NUM_PASSES; k++) {
* identity permutation, so that (S0[x] ^ x) is a permutation.
F[i] ^= i;
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS4944009 *Feb 25, 1988Jul 24, 1990Massachusetts Institute Of TechnologyPseudo-random sequence generatorUS5454039Dec 6, 1993Sep 26, 1995International Business Machines CorporationSoftware-efficient pseudorandom function and the use thereof for encryptionUS5675652Jun 7, 1995Oct 7, 1997International Business Machines CorporationComputer readable device implementing a software-efficient pseudorandom function encryptionUS5835597Mar 31, 1997Nov 10, 1998International Business Machines CorporationSoftware-efficient pseudorandom function and the use thereof for decryptionUS6490354 *Jun 23, 1998Dec 3, 2002Microsoft CorporationLightweight word-oriented technique for generating a pseudo-random sequence for use in a keystream of a stream cipher* Cited by examinerNon-Patent CitationsReference1B. Schneier et al., "Cryptographic Support for Secure Logs on Untrusted Machines," Proc. Seventh USENIX Security Symposium,, USENIX Press, Jan. 1998, pp. 53-62.2B. Schneier, "Applied Cryptography: Protocols, Algorithms and Source Code in C," 2<nd >ed. (New York: John Wiley & Sons, 1996), pp. 400-402.3D. Harkins et al., "The Internet Key Exchange (IKE)," RFC 2409, The Internet Society, Nov. 1998.4H. Orman, "The OAKLEY Key Determination Protocol," RFC 2412, The Internet Society, Nov. 1998.5M. Bellare et al., "Forward Integrity for Secure Audit Logs," Dept. Comp. Sci. Eng., Univ. Calif. at San Diego, Nov. 23, 1997.6O. Goldreich et al., "How to Construct Random Functions," Journal of the Association for Computing Machinery, 53:4 (Oct., 1986), pp. 792-807.7Rogaway, P. and Coppersmith, D., "A Software-Optimized Encryption Algorithm", Proc. of 1994 Fast Software Encryption Workshop, Lecture Notes In Computer Science, vol. 809, Springer-Verlag, 1994, pp. 56-63, reprinted in J. Cryptology 11:4, Springer-Verlag, 1998, pp. 273-287, and http://www.cs.ucdavis.edu/~rogaway/papers/seal-abstract.html.8S. Kent et al., "IP Authentication Header," IETF Request for Comments (RFC) 2402, The Internet Society, Nov. 1998.9S. Kent et al., "IP Encapsulating Security Payload (ESP)," IETF Request for Comments (RFC) 2406, The Internet Society, Nov. 1998.10S. Kent et al., "Security Architecture for the Internet Protocol," IETF Request for Comments (RFC) 2401, The Internet Society, Nov. 1998.Referenced byCiting PatentFiling datePublication dateApplicantTitleUS7006628 *Jan 4, 2002Feb 28, 2006Avaya Technology Corp.Efficient packet encryption methodUS7095850 *Oct 17, 2001Aug 22, 2006Cisco Technology, Inc.Encryption method and apparatus with forward secrecy and random-access key updating methodUS7362870 *Apr 17, 2002Apr 22, 2008Sony CorporationMethod and apparatus for recording/playing back informationUS7925013 *Jun 30, 2003Apr 12, 2011Conexant Systems, Inc.System for data encryption and decryption of digital data entering and leaving memoryUS8050405Sep 30, 2005Nov 1, 2011Sony Ericsson Mobile Communications AbShared key encryption using long keypadsUS9077509 *Dec 7, 2006Jul 7, 2015Koninklijke Philips N.V.Secure threshold decryption protocol computationUS20040125951 *Dec 26, 2002Jul 1, 2004Sun Microsystems, Inc., A Delaware CorporationBitstreaming for unreadable redundancyUS20140025708 *Jul 19, 2013Jan 23, 2014Jan FinisIndexing hierarchical dataCN101150404BJul 6, 2007Oct 27, 2010国际商业机器公司System and method for managing and generating device cipher key used for cipher communicationWO2007040664A2 *Jun 5, 2006Apr 12, 2007Sony Ericsson Mobile Comm AbShared key encryption using long keypads* Cited by examinerClassifications U.S. Classification380/42, 380/44, 380/46, 380/37, 380/43, 380/47, 380/45International ClassificationH04L9/06, H04L9/22, H04L9/18Cooperative ClassificationH04L2209/12, H04L2209/08, H04L9/065European ClassificationH04L9/06, H04L9/18, H04L9/06VLegal EventsDateCodeEventDescriptionSep 29, 2000ASAssignmentOwner name: CISCO TECHNOLOGY, INC., CALIFORNIAFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:MCGREW, DAVID A.;FLUHRER, SCOTT R.;REEL/FRAME:011180/0629Effective date: 20000928Jun 21, 2005CCCertificate of correctionAug 19, 2008FPAYFee paymentYear of fee payment: 4Sep 4, 2012FPAYFee paymentYear of fee payment: 8RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services

value: This website is a search engine provided by Google. Handling over 3.5 billion searches per day, it has a 92% share of the global search engine market.


text:
Super 8 North Fort Worth Hotel Reviews | Expedia
Super 8 North Fort Worth Reviews
by A verified traveler from Kansas City, KS area
Posted Jun 9, 2017 The bed was very comfortable, there were mornings that there was no fruit for breakfast. My wife was with me and used the excercise room, she said that the tread mill made noise, she wasn't impressed. The maid service was good. The air quality in the room was very bad. It was so humid in the room that the vitamin C tablets were dissolving in my closed pill case. I would not recommend staying there.
Okay. To much construction going on Posted Apr 30, 2017 The place was loud with to many trucks and trucker leaving and coming at all ours of the night. Comment from Hotel Management
May 26, 2017 by Jay , Hotel Management
Thank you for your feedback, we would like to welcome you back in the near future and we will make sure your future stay is as comfortable as possible. Thank you.
Posted Mar 21, 2017 The staff was friendly, aa d the rooms were clean and comfortable. Comment from Hotel Management
Mar 29, 2017 by Jay , Hotel Management
Thank you for your feedback. We would like to welcome you back in the near future and we will do the best to serve you with the best of service. Thank you.
by A verified traveler from Fort Wotth
Posted Mar 16, 2017 The whole hotel smells of smoke. The rooms towels, sheets, pillows and blankets were all stained. The smoke detector was missing. Comment from Hotel Management
Not our picture. You must have mistaken our property to other property and don't have any smoking rooms on 1st or 2nd floor. Thank you.
Not a welcoming atmosphere. Our room smelled horrible and the bed hurt our backs they were so hard and uncomfortable.
Posted Mar 14, 2017 Pros: Everything in okay condition; Staff was helpful.
I encountered no real problems when I stayed at this hotel. All I can stay is excellent for its price. A few restaurants near this hotel is definitively a plus. Will stay again for sure!
Mar 17, 2017 by Jay, Hotel Management
Thank you for your response. We would like to welcome you back in the near future and we will make sure your stay is clean and comfortable. Thank you.
Could clean the room a little better. There was a lot of hair in one of the towels. The app said 4 miles to the Stockyards. It's more like 7. Not a biggie but I put in less than 5 miles in the app. Not the hotels fault but just informing.
Posted Feb 10, 2017 Pros: It was clean and comfy, the beds were very comfortable.Breakfast was good.
Cons: Maybe two pillows instead of just one, other than that it was excellent
Location: It is close to everything you might want or need. We liked the hotel a lot. It was clean and quiet. Comfortable beds and the breakfast was very good. We would stay again.
Mar 4, 2017 by Jay , Hotel Management
Appreciate your feedback, and would like to welcome you back in the near future.
Worst Super 8 stay ever!!
Got to Super 8 between 3-4 am, service was not good, incorrect room reserved for us, right around corner from front desk of all places, desk clerk acted like he had done us a favor with Handicap accessible room which we absolutely had no need for. Overall horrible excuse for hotel, and check-out time being 11am is ridiculous. I WILL BE IN CONTACT WITH WHOMEVER FOR MAJOR REIMBERSMENT FOR THIS EXPERIENCE TRUST.

type: global

value: This website is an online travel agency owned by Expedia Group, an American online travel shopping company based in Seattle.


text:
Kazuhiko Ohno - Semantic Scholar
Kazuhiko Ohno
Hiroshi Nakashima14
Anoop Gupta12
Shinji Tomita12
Toshio Kondo9
Takahiro Sasaki9
13Hiroshi Nakashima
8Toshio Kondo
8Takahiro Sasaki
7Tomoyuki Nakabayashi
5Gregory T. Byrd
A Mechanism for Speculative Memory Accesses Following Synchronizing Operations
Takayuki Sato, Kazuhiko Ohno, Hiroshi Nakashima
In order to reduce the overhead of synchronizing operations of shared memory multiprocessors, this paper proposes a mechanism, named specMEM, to execute memory accesses following a synchronizing… (More)
Parallel Language and Compiler Research in Japan
Satoshi Sekiguchi, Kei Hiraki, +42 authors Katsuyuki Kaneko
Shaman: A Distributed Simulator for Shared Memory Multiprocessors
Haruyuki Matsuo, Shigeru Imafuku, Kazuhiko Ohno, Hiroshi Nakashima
This paper describes our distributed architectural simulator of shared memory multiprocessors named Shaman. The simulator runs on a PC cluster that consists of multiple front-end nodes to simulate… (More)
Evaluation of Variable Level Cache
Nobuyuki Matsubara, Takahiro Sasaki, Kazuhiko Ohno, Toshio Kondo
Automatic Optimization of Thread Mapping for a GPGPU Programming Framework
Kazuhiko Ohno, Tomoharu Kamiya, Takanori Maruyama, Masaki Matsumoto
Although General Purpose computation on GPU (GPGPU) is widely used for high-performance computing, standard programming frameworks such as CUDA and Open CL are still difficult to use. They require… (More)
Measurement of Low-Energy Processor Chip Using Fine-Grain Variable Stages Pipeline Architecture
Tomoyuki Nakabayashi, Takahiro Sasaki, Kazuhiko Ohno, Toshio Kondo
2012 Third International Conference on Networking…
Increase of energy consumption caused by processor enhancement has recently become a serious problem. Dynamic voltage and frequency scaling (DVFS) which dynamically lowers the supply voltage and… (More)
Efficient Goal Scheduling in Concurrent Logic Language using Type-Based Dependency Analysis
Kazuhiko Ohno, Masahiko Ikawa, Masahiro Goshima, Shin-ichiro Mori, Hiroshi Nakashima, Shinji Tomita
Reference Filtering for Distributed Simulation of Shared Memory Multiprocessors
Shigeru Imafuku, Kazuhiko Ohno, Hiroshi Nakashima
Annual Simulation Symposium
This paper proposes a method to reduce the amount of the memory references generated by the front-end of our distributed execution-driven simulator for shared memory multiprocessors named Shaman. The… (More)
Orgel: A Parallel Programming Language with Declarative Communication Streams
Kazuhiko Ohno, Shigehiro Yamamoto, Takanori Okano, Hiroshi Nakashima
ISHPC
Because of the irregular and dynamic data structures, parallel programming in non-numerical eld often requires asynchronous and unspeci c number of messages. Such programs are hard to write using… (More)
Amaterous: a Parallel Wire Router without Detailed/global Feedback
Kotaro Tanaka, Kazuhiko Ohno, Hiroshi Nakashima
This paper proposes a new parallel wire routing algorithm named Amaterous. As many successful parallel wire routers, Amaterous has global and detailed routers, but the feedback from the detailed to… (More)

value: This website is an artificial-intelligence backed search engine for academic publications developed at the Allen Institute for AI and publicly released in November 2015. It uses advances in natural language processing to provide summaries for scholarly papers.


text:
Patent US4400623 - Radiation attenuation system - Google Patents
A portable self-supporting modular radiation attenuation system formed from a plurality of modules secured to one another in any desired alignment to protect workers from radiation exposure. The modules are hollow containers shaped to mate with one another when secured thereto such as by strapping. The...http://www.google.com/patents/US4400623?utm_source=gb-gplus-sharePatent US4400623 - Radiation attenuation system
Publication number US4400623 A
Application number US 06/222,082
Publication number 06222082, 222082, US 4400623 A, US 4400623A, US-A-4400623, US4400623 A, US4400623A
Inventors Earl B. Jacobson
Original Assignee Nuclear Power Outfitters
Patent Citations (4), Referenced by (36), Classifications (7), Legal Events (8)
US 4400623 A
A portable self-supporting modular radiation attenuation system formed from a plurality of modules secured to one another in any desired alignment to protect workers from radiation exposure. The modules are hollow containers shaped to mate with one another when secured thereto such as by strapping. The modules can be a single height or stacked and include ports for filling the modules with attenuation fluid when assembled and emptying them when they are to be removed. The modules mate with one another to eliminate radiation paths between the assembled modules. The modules can be formed from fiberglass and can include internal reinforcing to maintain the mating shapes.
1. A self-supporting modular radiation attenuation system comprising:
a plurality of interengaging radiation attenuation module elements, each element adapted to be substantially filled with a radiation attentuating fluid when positioned where desired;
each of said module elements including complementary interengaging surface portions configured to nest within a substantially complementary portion of an adjacent module to substantially eliminate when assembled directed radiation paths between assembled module means while accommodating substantial nested cumulative misalignment; and
each of said module means including retention means adapted for securing said module means to one another in any desired alignment within the limits of said nested relationship, whereby said elements may be arranged with respect to each other to accommodate and shield an irregular surface.
2. The radiation attenuation system according to claim 1 wherein:
said assembly means include at least a pair of straps; and
a pair of mounting means each including an opening adapted to pass a strap from an adjacent module means therethrough to secure said module means to one another.
3. The radiation attenuation system according to claim 1 wherein:
at least one of said module means include viewing port means.
4. The radiation attenuation system according to claim 1 wherein:
at least one of said module means include means for indicating the fluid level in said module means.
5. The radiation attenuation system according to claim 1 wherein:
each of said module means include means adapted to stack said module means one on top of another.
6. The radiation attenuation system according to claim 1 wherein:
said module means include internal reinforcing means.
7. The radiation attenuation system according to claim 1 wherein:
said module shaped means include an elongated body which includes a concave surface on a portion of said body and a conforming convex surface on a second portion of said module means.
8. The radiation attenuation system according to claim 1 wherein:
9. The radiation attenuation system according to claim 8 wherein:
said reinforcing means extend substantially the length of said body on the inside of said concave surface to maintain said shape.
10. The radiation attenuation system according to claim 1 wherein:
said module means include port means for filling and removing the fluid from said module means.
11. The radiation attenuation system according to claim 10 wherein:
said port means include means for substantially completely filling and substantially completely emptying said module means.
12. The module according to claim 1 wherein:
said container body is an elongated body which includes a concave surface on a portion of said body and a conforming convex surface on a second portion of said body.
13. The module according to claim 1 wherein:
said body includes internal reinforcing means.
14. The module according to claim 1 wherein:
15. The module according to claim 1 wherein:
said port means include means for substantially completely filling and substantially completely emptying said body.
The invention relates generally to radiation attenuation systems and more particularly to a modular radiation attenuation system designed to be temporarily assembled in any desired location and alignment and then filled with radiation attenuating fluid.
The above and other disadvantages of prior art radiation attenuation systems and techniques are overcome in accordance with the present invention by providing a self-supporting modular radiation attenuation system which easily can be assembled in any desired configuration between the radiation source and the work area. The system is formed from a plurality of radiation attenuation modules which are shaped to conform with adjacent modules when secured to one another in the desired alignment. The modules are formed from hollow containers which include entrance and exit ports for filling the containers with the radiation attenuation fluid such as water. Each module includes flexible strapping to secure it to the adjacent module when assembled in the desired alignment in relation to the radiation source. The system can include single or stackable modules.
FIG. 1 is a partial perspective view of one embodiment of the modular radiation attenuation system of the invention with portions broken away;
Referring to FIGS. 1 and 2, a modular radiation attenuation system embodying the invention is designated generally by the reference numeral 10. The modular radiation attenuation system or radiation attenuator 10 is shown assembled in an angular configuration and includes a plurality of modules 12. Each module 12 includes at least two ports 14 and 16 which are utilized to fill and empty the modules 12 with radiation attenuating fluid. Each module 12 includes a container body 18 shaped to conform to the body 18 of an adjacent module.
US4123662 * Mar 7, 1977 Oct 31, 1978 The B.F. Goodrich Company Shield bag
US5225685 * Feb 11, 1992 Jul 6, 1993 Southern Metal Works, Inc. Construction module protecting against emissions from radio active material and method
US5241573 * Jan 8, 1992 Aug 31, 1993 Thacker Michael S Shield apparatus
US5929458 * Apr 30, 1997 Jul 27, 1999 Hitachi, Ltd. Radiation shield
US7442949 * Jul 24, 2006 Oct 28, 2008 Stanley Earl Foster Portable nuclear radioactive fallout shelter and preservation of potable water storage system
US8621789 Jan 11, 2013 Jan 7, 2014 Michael Francis Trochan Storm shelter and method of use thereof
US20080016815 * Jul 24, 2006 Jan 24, 2008 Foster Stanley E Portable nuclear radioactive fallout shelter and preservation of potable water storage system
US20100183110 * Mar 18, 2008 Jul 22, 2010 Rene Chiocca Packaging for the transportation and/or storage of nuclear materials which includes radiological protection made of lead cast over a metallic framework
CN101652817B Mar 18, 2008 Feb 13, 2013 Tn国际公司 Container for transporting and/or storing nuclear materials, comprising a radiological shield made of lead cast onto a metal reinforcement
DE3517930A1 * May 18, 1985 Nov 20, 1986 Hermann Scholz Gmbh Shielding wall of preformed structural members
EP0328285A2 * Jan 31, 1989 Aug 16, 1989 United Kingdom Atomic Energy Authority Radioactive waste storage system
EP0328285A3 * Jan 31, 1989 Apr 25, 1990 United Kingdom Atomic Energy Authority Radioactive waste storage system
EP0404428A1 * Jun 14, 1990 Dec 27, 1990 Westinghouse Electric Corporation Water filled tanks for temporary shielding of reactor vessel internals and method of assembly
EP0561694A1 * Mar 16, 1993 Sep 22, 1993 ELECTRICITE DE FRANCE Service National Container for receiving a liquid for protecting biologically against ionizing radiations, wall and method to build up a wall comprising such containers
WO2001054136A1 * Jan 16, 2001 Jul 26, 2001 John Sims Protective screen block
WO2008125409A1 * Mar 18, 2008 Oct 23, 2008 Tn International Container for transporting and/or storing nuclear materials, comprising a radiological shield made of lead cast onto a metal reinforcement
WO2009058193A2 * Oct 14, 2008 May 7, 2009 Paceco Corp Relocatable radiation shield for a container scanner
WO2009058193A3 * Oct 14, 2008 Aug 20, 2009 Paceco Corp Relocatable radiation shield for a container scanner
U.S. Classification 250/517.1, 376/287, 250/519.1, 976/DIG.335
Cooperative Classification G21F3/00


text:
morning light: Digital Photography Review
Thursday, 15th March, 2012 21:10
Challenges open for submissionFinishing todayGear Porn49/ entriesLivestock 286/100 entries1 day left-Military Parade- (in Full Colours Only)34/75 entriesSplendid Spring (With Border and Title suiting a Postcard)40/100 entries2 days leftColors of the Animal Kingdom74/150 entries3 days leftMacro - Something Frosted or Frozen33/70 entriesOutdoor Exercise24/50 entries4 days left- Animal Photography : Lambs - (Full Colours Only + Border + Title watermark)10/85 entriesStars23/55 entriesShallow Depth of Field (Suited to Mirrorless and SLR cameras)65/100 entries5 days leftNight sky18/50 entriesVSCO CAM0/100 entries6 days leftShades of Brown in Nature2/100 entriesFull challengesGet High or Get Low75/75 entriesMy Best Photo of the Week70/70 entries
Challenges open for votingFinishing todayLightning1037 votes, 39 entriesFire1272 votes, 89 entriesLivestock 11635 votes, 100 entriesSplish, Splash!874 votes, 58 entries1 day left-Cagefighter@MMA- (in Full Colours Only)73 votes, 5 entriesAll washed up (with Border and Title suiting a postcard)592 votes, 48 entries2 days leftFirst birthday263 votes, 27 entries3 days leftMy Best Photo of the Week754 votes, 70 entriesMacro - Stacked images with multiple photos and a raster graphics editor320 votes, 33 entriesHot Girl Cold Water555 votes, 34 entries4 days left- Animal Photography : Panda Bears- (Full Colours Only + Border + Title watermark)215 votes, 36 entriesSplash! Frozen in time.217 votes, 26 entriesPoint363 votes, 50 entries5 days leftSpace launch31 votes, 6 entriesVSCO Film 07: Eclectic Films2 votes, 1 entry6 days leftA Movie Title, with A Twist of Nature44 votes, 100 entries

value: This website is a website about digital cameras and digital photography, established in November 1998. The website provides comprehensive reviews of digital cameras, lenses and accessories, buying guides, user reviews, and forums for individual cameras, as well as general photography forums.


text:
P. 1Saber EscucharSaber EscucharRatings: (0)|Views: 11
|Likes: 0Published by pingapeluaMore info:Published by: pingapelua on Jul 02, 2013Copyright:Attribution Non-commercialAvailability:Read on Scribd mobile: iPhone, iPad and Android.download as PDF, TXT or read online from ScribdFlag for inappropriate content|Add to collectionSee moreSee lesshttps://www.scribd.com/doc/151234866/Saber-Escuchar02/05/2014pdftextoriginal You're Reading a Free Preview
This Monologue is Inspired by the Recent but Not Unpredic...
Covey, Stephen - Los 7 Hábitos de la Gente Altamente Efec...

value: This website is an American e-book and audiobook subscription service that includes one million titles.


text:
Flaherty Says Canadian Banks Have Capital for Acquisitions - Bloomberg For more local news from India, visit Bloombergquint.com Bloomberg the Company & Its ProductsBloomberg Anywhere Remote LoginBloomberg Anywhere LoginBloomberg Terminal Demo Request Bloomberg
Bloomberg Anywhere Remote LoginDownload SoftwareService Center MENU Homepage Markets Stocks Currencies Commodities Rates + Bonds Economics Magazine Benchmark Watchlist Economic Calendar Tech Silicon Valley Global Tech Venture Capital Hacking Digital Media Bloomberg West Pursuits Cars & Bikes Style & Grooming Spend Watches & Gadgets Food & Drinks Travel Real Estate Art & Design Politics With All Due Respect Delegate Tracker Culture Caucus Podcast Masters In Politics Podcast What The Voters Are Streaming Editors' Picks Opinion View Gadfly Businessweek Subscribe Cover Stories Opening Remarks Etc Features 85th Anniversary Issue Behind The Cover More Industries Science + Energy Graphics Game Plan Small Business Personal Finance Inspire GO Board Directors Forum Sponsored Content Sign In Subscribe Flaherty Says Canadian Banks Have Capital for Acquisitions Joe Brennan June 28, 2012 — 12:39 PM EDT Share on FacebookShare on TwitterShare on WhatsApp Share on LinkedInShare on RedditShare on Google+E-mailShare on TwitterShare on WhatsApp Share on FacebookShare on TwitterShare on WhatsApp Share on LinkedInShare on RedditShare on Google+E-mailShare on TwitterShare on WhatsApp Canadian Finance Minister Jim Flaherty said the country’s lenders have enough capital for acquisitions.
Asked about the possibility of a Canadian lender buying an Irish bank, Flaherty said “some Canadian banks have made acquisitions in Asia and the U.S.” adding “there is no reason why they can’t make investments elsewhere so long as they maintain adequate capital.”
Flaherty said Canada supervises its banks “quite closely, including their capital requirements.” He said that new international rules -- the so-called Basel III regulations -- have increased both the “quality and quantity of the capital” lenders are required to hold. Flaherty made the comments to reporters in Galway, Ireland, following a presentation at a conference today.

value: This website is an international news agency headquartered in New York City and a division of Bloomberg L.P. Content produced by Bloomberg News is disseminated through Bloomberg Terminals, Bloomberg Television, Bloomberg Radio, Bloomberg Businessweek, Bloomberg Markets, Bloomberg.com, and Bloomberg's mobile platforms. Since 2015, John Micklethwait has served as editor-in-chief.


text:
View from our room - Picture of Golf View Hotel & Spa, Nairn - TripAdvisor
View from our room - Picture of Golf View Hotel & Spa, Nairn
“We didn't book this hotel but...........”
“Service was first class... Food wasn't bad!”
“WOW - Crerar have made this hotel a winner”
“Bad customer services”	03/23/2017
“Taster menu”	03/21/2017
global-sc...
30 helpful votes “Fantastic Relaxing Break!”
This is the first time staying at this hotel, we stayed here for 2 nights on 18/03/12 on their 'dinner first night' deal. Check in was faultless, room was a really good size with a large bathroom (separate bath and shower).
The hotel is out of the centre of the town in a residential area, with the beach next to...
More Helpful? Thank global-scott Report NairnIain, General Manager at Golf View Hotel & Spa, responded to this review
Thank you for your excellent feedback. I have shared your kind comments with the Golf View and Spa staff.
Add Photo See all 1,121 reviews of Golf View Hotel & Spa Explore similar hotels Eight Acres Hotel & Leisure Club 771 ReviewsShow Prices 21.4 miles The Craiglynne Hotel 616 ReviewsShow Prices 20.9 miles Ben Wyvis Hotel 531 ReviewsShow Prices 23.7 miles See all Nairn hotels About Us

value: This website is an American online travel company that operates a website and mobile app with user-generated content and a comparison shopping website.


text:
Zaggora Hot Pants in - Portland | Groupon
Promotional value expires Dec 12, 2011. Amount paid never expires. Limit 1 per person, may buy 2 additional as gifts. Not valid until 11/12/11. Online only. $7.50 fee for shipping. Valid only for shipping within lower-48 US States. Merchant is solely responsible to purchasers for the care and quality of the advertised goods and services.

value: This website is an American global e-commerce marketplace connecting subscribers with local merchants by offering activities, travel, goods and services in 15 countries. Based in Chicago, Groupon was launched there in November 2008, launching soon after in Boston, New York City and Toronto.


text:
Patent US7333492 - Firewall proxy system and method - Google PatentsSearch Images Maps Play YouTube News Gmail Drive More »Sign inPatentsA media gateway control protocol (MGCP) proxy server interfaces between a plurality of MGCP gateways and at least one MGCP call agent which may be coupled to a private network and served by a network address translation firewall. The proxy server comprises a private network interface for communicating...http://www.google.com/patents/US7333492?utm_source=gb-gplus-sharePatent US7333492 - Firewall proxy system and methodAdvanced Patent SearchTry the new Google Patents, with machine-classified Google Scholar results, and Japanese and South Korean patents.Publication numberUS7333492 B2Publication typeGrantApplication numberUS 10/930,182Publication dateFeb 19, 2008Filing dateAug 31, 2004Priority dateAug 31, 2004Fee statusPaidAlso published asUS20060045068Publication number10930182, 930182, US 7333492 B2, US 7333492B2, US-B2-7333492, US7333492 B2, US7333492B2InventorsJianMin Wu, Chen-Huei ChangOriginal AssigneeInnomedia Pte LtdExport CitationBiBTeX, EndNote, RefManPatent Citations (3), Referenced by (25), Classifications (13), Legal Events (3) External Links: USPTO, USPTO Assignment, EspacenetFirewall proxy system and method
US 7333492 B2Abstract
Patent CitationsCited PatentFiling datePublication dateApplicantTitleUS20030093563 *Oct 9, 2002May 15, 2003Young Bruce FitzgeraldMethod and system for implementing and managing a multimedia access network deviceUS20040034793 *Aug 15, 2003Feb 19, 2004Wei YuanMethod for providing media communication across firewallsUS20040158606 *Apr 8, 2003Aug 12, 2004Mingtar TsaiTransmission method of multimedia data over a network* Cited by examinerReferenced byCiting PatentFiling datePublication dateApplicantTitleUS7646775 *Oct 27, 2005Jan 12, 2010Leaf Networks, LlcProtocol and system for firewall and NAT traversal for TCP connectionsUS7706358 *Feb 12, 2007Apr 27, 2010Fujitsu LimitedIP application service providing systemUS7907514 *Sep 29, 2005Mar 15, 2011Cisco Technology, Inc.MGCP fallback mechanism enhancementUS7995594 *Dec 21, 2009Aug 9, 2011Netgear, Inc.Protocol and system for firewall and NAT traversal for TCP connectionsUS8165126 *Mar 25, 2009Apr 24, 2012Huawei Technologies Co., Ltd.Method, apparatus and system for selecting VMGUS8233491Sep 28, 2006Jul 31, 2012Burns Jr James MEmbedded media terminal adapter (EMTA) endpoint redirect modeUS8363805Jun 22, 2006Jan 29, 2013Burns Jr James MMedia terminal adapter (MTA) initialization process display by use of an embedded caller name and caller identificationUS8526583 *Sep 29, 2006Sep 3, 2013James M. Burns, JR.Media terminal adapter (MTA) local ringback optionUS8675856Aug 1, 2006Mar 18, 2014Cisco Technology, Inc.Media terminal adapter (MTA) routing of telephone calls based on caller identification informationUS8923310Aug 3, 2011Dec 30, 2014Netgear, Inc.Protocol and system for firewall and NAT traversal for TCP connectionsUS9154552Aug 20, 2012Oct 6, 2015Microsoft Technology Licensing, LlcMethod and apparatus for cooperative file distribution with receiver determined quality of servicesUS20060215684 *Oct 27, 2005Sep 28, 2006Capone Jeffrey MProtocol and system for firewall and NAT traversal for TCP connectionsUS20060236386 *Mar 31, 2005Oct 19, 2006Popkin Laird AMethod and apparatus for cooperative file distribution in the presence of firewallsUS20070073891 *Sep 29, 2005Mar 29, 2007Cisco Technology, Inc.MGCP fallback mechanism enhancementUS20070091870 *Oct 20, 2005Apr 26, 2007Samsung Electronics Co., Ltd.Method and system for releasing a TIF session for a SIP agent when a call process interface handler is interruptedUS20070147263 *Jun 23, 2006Jun 28, 2007Jian-Zhi LiaoMethod for transmitting real-time streaming data and apparatus using the sameUS20070297384 *Jun 22, 2006Dec 27, 2007Burns James MMedia terminal adapter (mta) initialization process display by use of an embedded caller name and caller identificationUS20080013534 *Apr 12, 2007Jan 17, 2008Akihito TsuzukiPacket transfer device and communication systemUS20080043970 *Aug 1, 2006Feb 21, 2008Scholes Bryan WMedia terminal adapter (mta) routing of telephone calls based on caller identification informationUS20080075097 *Feb 12, 2007Mar 27, 2008Fujitsu LimitedIP application service providing systemUS20080080680 *Sep 29, 2006Apr 3, 2008Burns James MMedia terminal adapter (mta) local ringback optionUS20080080690 *Sep 28, 2006Apr 3, 2008Burns James MEmbedded media terminal adapter (emta) endpoint redirect modeUS20090180488 *Mar 25, 2009Jul 16, 2009Yang WeiweiMethod, apparatus and system for selecting vmgUS20090225775 *Mar 6, 2008Sep 10, 2009Integrated Device Technology, Inc.Serial Buffer To Support Reliable Connection Between Rapid I/O End-Point And FPGA Lite-Weight ProtocolsUS20110289154 *May 19, 2010Nov 24, 2011Log Corp.Online chatting system and method for user connected to website* Cited by examinerClassifications U.S. Classification370/392, 370/401International ClassificationH04L12/56Cooperative ClassificationH04L29/12509, H04L61/255, H04L29/12009, H04L29/12462, H04L61/2567European ClassificationH04L61/25A6, H04L61/25A8B, H04L29/12A, H04L29/12A4A8B, H04L29/12A4A6Legal EventsDateCodeEventDescriptionAug 31, 2004ASAssignmentOwner name: INNOMEDIA PTE LTD., SINGAPOREFree format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:WU, JIANMIN;CHANG, CHEN-HUEI;REEL/FRAME:015761/0399Effective date: 20040826May 7, 2011FPAYFee paymentYear of fee payment: 4Jun 16, 2015FPAYFee paymentYear of fee payment: 8RotateOriginal ImageGoogle Home - Sitemap - USPTO Bulk Downloads - Privacy Policy - Terms of Service - About Google Patents - Send FeedbackData provided by IFI CLAIMS Patent Services


text:
−[[Category:Arkansas|Archives]] Revision as of 17:28, 5 December 2012
Federal District: District of ColumbiaEthnic/ReligiousAfrican American • American Indian • Germans from Russia • Jewish • Tracing ImmigrantsTerritoriesAmerican Samoa • Guam • Northern Mariana Islands • Puerto Rico • U.S. Virgin IslandsFormer TerritoriesCuba • Marshall Islands • Micronesia • Palau • Panama Canal Zone • Philippines Retrieved from "https://familysearch.org/wiki/en/index.php?title=Arkansas_Archives_and_Libraries&oldid=1185319"	Categories: Pages using duplicate arguments in template callsTemplatesArkansasHidden category: Adopted pages	Navigation menu

value: This website is a nonprofit organization and website offering genealogical records, education, and software. It is operated by The Church of Jesus Christ of Latter-day Saints , and is closely connected with the church's Family History Department.


text:
Northern Khmer people - Wikipedia, the free encyclopedia
Ethnic Khmer in Thailand
Isan Buriram, Surin, Sisaket
Eastern Trat, Chanthaburi
Thai, Northern Khmer
Mon, Wa, and other Mon–Khmer groups
Northern Khmer people, also known in Thai as Thai-Khmer people (Thai: ไทยเชื้อสายเขมร lit. "Thais of Khmer descent"),[1] is the designation used to refer to ethnic Khmers native to the Isan region of Northeast Thailand.
3 Notable Thai-Khmers
Khmers have had a presence in this area since at least the time of the Khmer Empire.[2] With the fall of the Angkor, the Khmers of the Isan region were subject to increasing Thai influence. In the 18th century, Thailand officially annexed the former Cambodian province of Surin. The Khmer residents became de facto subjects of the Thai monarchy and a long process of cultural assimilation began.
Although now a minority, the Northern Khmer have maintained some of their Khmer identity, practicing the Khmer form of Theravada Buddhism and speaking a dialect of the Khmer language known as Khmer Surin in Khmer or Northern Khmer in English. Few Northern Khmers are able to read or write their native language[3] due to Thaification policies either enacted or encouraged by the Thai government.
Thai language instruction in public schools has resulted in many of the younger generation being more comfortable using Thai as a medium of communication. Recent renewed interest in Khmer language and culture has resulted in a two-fold increase in the usage of Northern Khmer since 1958.[4]
Notable Thai-Khmers[edit]
Suvadhana — Princess Consort to the King Vajiravudh of Siam. (Khmer descent from Battambang)

value: This website is the English-language edition of the free online encyclopedia Wikipedia. It was founded on 15 January 2001 as Wikipedia's first edition and, as of October 2021, has the most articles of any edition, at 6,412,521.


text:
Amazon.co.uk: Devilishly Hot Kathy Love - Paperback: Books Amazon Try Prime Your Amazon.co.uk Today's Deals Gift Cards Sell Help Shop by Department Hello. Sign in Your Account Try Prime Basket Wish List Search Books All Departments Amazon Instant Video Apps & Games Baby Beauty Books Car & Motorbike CDs & Vinyl Classical Clothing Computers & Accessories Digital Music DIY & Tools DVD & Blu-ray Electronics & Photo Garden & Outdoors Gift Cards Grocery Health & Personal Care Jewellery Kindle Store Kitchen & Home Large Appliances Lighting LOVEFiLM by Post Luggage Musical Instruments & DJ PC & Video Games Pet Supplies Shoes & Bags Software Sports & Outdoors Stationery & Office Supplies Toys & Games VHS Watches Books
Sell Your Books 2 results for Books : Paperback : "Devilishly Hot Kathy Love" "Devilishly Hot Kathy Love" Cancel
Devilishly Hot (Devilishly 1)
Format Any Format Paperback Author Kathy Love (1) Rebecca Zanetti (1) Language English (2) Delivery Option (What's this?) Free Delivery by Amazon Avg. Customer Review 4 Stars & Up& Up (1) 3 Stars & Up& Up (1) 2 Stars & Up& Up (1) 1 Star & Up& Up (1) Availability Include Out of Stock Unlimited One-Day Delivery and more Prime members enjoy unlimited One-Day Delivery and exclusive access to movies, TV shows and Kindle books. > Get Started There's a problem loading this menu at the moment. Learn more about Amazon Prime. Amazon Instant Video

value: This website is an American multinational technology company which focuses on e-commerce, cloud computing, digital streaming, and artificial intelligence.


text:
Path finding in C# - CodeProject 12,702,272 members (34,966 online)
200.9K views4.4K downloads75 bookmarked
Path finding in C# Sune Trudslev, 3 Jan 2004
4.60/5 - 21 votes2 removedμ 3.97, σa 1.73 [?]
A generic implementation of the A* (AStar) path finding algorithm in C#.	Download source files - 7.24 Kb Introduction
Combinatory puzzles like Rubric Cube or 8-puzzles. Route finding. Robot navigation. And, of course, path finding in video games, which is what we are going to use it for. The reason the A* algorithm works so well, is that it favors points that are close to the starting point, and points that are close to the goal as well.
The two most important methods relating to the A* search:/// <summary>
/// <returns>Returns the topmost object on the list</returns>
public void Push(object Object); I am considering tuning this part in a later article, possible using a binary heap as the data structure. More on this later.
First we assign the starting node and the goal node to private variables. These will be used through-out the entire pathfinding. Then we add the starting node as our initial search state:FStartNode = AStartNode;
Then we start our main loop. We will keep looping as long as there are still nodes on our heap:while(FOpenList.Count > 0)
Then we get the node with the lowest TotalCost off the OPEN list. Since the heap is always sorted according to the IComparable interface implementation of the AStarNode class, this happens just by popping the value off the heap:// Get the node with the lowest TotalCost
If the current node is the solution, we will now copy the completed path to the Solution list:// If the node is the goal copy the path to the solution array
Then we ask the AStarNode child to give us all possible successors of the current node (except the parent of the current node of course):// Get successors to the current node
Then we loop through the successors and see if they are worth anything:foreach(AStarNode NodeSuccessor in FSuccessors)
First we see if the successor node is already on the OPEN list, if it is and the TotalCost is higher than the existing one, we will discard this successor node:// Test if the currect successor node is on the open list, if it is and
if((NodeOpen != null) && (NodeSuccessor.TotalCost > NodeOpen.TotalCost))
Then we do the exact same thing on the CLOSED list:// Test if the currect successor node is on the closed list, if it is and
if((NodeClosed != null) && (NodeSuccessor.TotalCost > NodeOpen.TotalCost))
Then we remove the instances found on the OPEN and CLOSED list:// Remove the old successor from the open list
Then we add the current successor to the OPEN list and end the loop:  // Add the current successor to the open list
Then last, but not least, we will add the current node to the closed list and end the loop:  // Add the current node to the closed list
} This concludes the main loop in the A* algorithm. Note, that there are circumstances where this implementation can enter an end-less loop. If, for example, the goal is unreachable. It is easy to implement ways to exit the loop, but I will leave the refinement of the implementation for a later time.
To create your own AStarNode descendant, you need to override all the virtual members of the AStarNode class:public virtual bool IsSameState(AStarNode ANode);
Justin Heyes-Jones A* tutorial Brian Stout's pathfinding tutorial from Games Developer Amit's Thoughts on Path-Finding and A-Star And for a very interesting graphical look:
James MacGill's Java based demo License
Heuristic used doesn't work well with different movement weights Member 79100464-May-14 7:49
Member 79100464-May-14 7:49 I'm using the following heuristic with good success inside Calculate():double xd = Math.Abs(FX - ((AStarNode2D)GoalNode).X);
if (xd > yd) {
Fixed Code Here; Shortest Paths returned Dan DiCicco26-Aug-13 12:20
Dan DiCicco26-Aug-13 12:20 The code that is posted will not always return the shortest path due to a bug in the .Contains function. If you replace your FindPath function with the following code, you should always be able to get the shortest path./// <summary>
/// <param name="AStartNode">Start node</param>
/// <param name="AGoalNode">Goal node</param>
while(FOpenList.Count > 0)
if((NodeClosed != null) && (NodeSuccessor.TotalCost > NodeClosed.TotalCost))
Re: Fixed Code Here; Shortest Paths returned Member 1076198120-Apr-14 11:33
Member 1076198120-Apr-14 11:33 This also fixes an infinite loop issue in Unity3D which causes the editor to crash.
Re: Fixed Code Here; Shortest Paths returned StudioWolfox27-Apr-14 1:43
StudioWolfox27-Apr-14 1:43 I am still getting infinite loops EDIT: not anymore, I had costs of 0 for certain nodes... stupid! caused loops in paths that did not end.modified 27-Apr-14 6:52am.
Question about full cost, opened and closed lists DmitrijNik14-Apr-13 1:05
DmitrijNik14-Apr-13 1:05 Hello. I'm a bit confused and I hope to get some assistance from you. So, why do you remove nodes from opened and closed lists if node's FULL cost greater than the FULL cost of the similar node in one of the lists? Imo, the full cost of the node is always greater than the full cost of the previous one. Am I right? Please, correct me. Can we remove nodes from opened/closed lists by it's Go-value that could be smaller than the one's in a lists?
Existent combinatorial optimization component dark_sidus19-Aug-07 1:36
dark_sidus19-Aug-07 1:36 We have created the most advanced combinatorial optimization component which potentially can solve any NP-hard problem including this one - optimal path finding.We have included into it a set of the most effective existent algorithms.We will also soon post here an article about it's advantages.http://www.divosoft.com/Products/Eol/Combinatory/Default.aspx[Divosoft EOL:Combinatory]
Sum nodes cost? stevenkong20-Apr-06 3:16
stevenkong20-Apr-06 3:16 Excuse me ~How to present the current node's cost?? I want to sum the current node, but I can't do this well... Can you help me ?? Thanks a lot~~ Bug responsible for slow Wojciech Wawrzyniak4-Mar-06 12:32
Wojciech Wawrzyniak4-Mar-06 12:32 The first thanks for article I found some others but here I've got code which help me with very fast understand this algorithm. The bug is in FSuccessor ArrayList This is no good to add ArrayList.Insert(0,object) It takes too long time ( O(n^2)) becouse add element at index 0 cause something like this: move all elements in array to index grater one. (A[i+1] <- A[i]). Better Way is do it in this way:while(...){ FSolution.Add(.....)}FSollution.Reverse();It change time of algorithm in many cases from 600 ms to only 30.I'm not exactly sure but there is other bug responsible for cycle. This is caused by deleting nodes when it takes GetSuccessor() I think this is not good better idea I think Is only change if this is needed: Below I put part of my code :	int CurrentCost = AStar.map.GetMapCost(AX,AY,AStar.unitSize);	if (CurrentCost == -1) return;	AStarNode NewNode = null;	if (AStar.wasAdded[AX,AY] != null)	{	NewNode = AStar.wasAdded[AX,AY];	if (NewNode.Cost> Cost + CurrentCost)	{	NewNode.FCost = Cost + CurrentCost;	NewNode.Parent = this;	}	return;in wasAdded array I have references to AStarNode which has been recovered earlier. And I change node only if this is needed or sth.. Perhaps in this solution the bug is also somewhere.Regards
Closed List jcuglo7-Feb-06 7:58
jcuglo7-Feb-06 7:58 You don't need the closed list. And even if you keep it you should never update elements in the closed list. Unless ...You accept negative costs in witch case none of this algorithms works Juan Uribejcuglo@hotmail.com
question nad18-Jan-06 6:40
nad18-Jan-06 6:40 i read your articles about Path finding in C# it was realy nice but i got some problems when i start to work with your code i tried to use the "Manhattan Distance" (Math.Abs(xd) + Math.Abs(yd)) functionand its didnt work soo well it return to me diagonal answers.what i need to do to fix this bugthanks Nadav H Re: question BuggyBrain2-Jun-06 2:47
BuggyBrain2-Jun-06 2:47 Hi,I got this problem, too, but the solution is simple: You have to change the GetSuccessor()-function so that it does not return the diagonal neighbors!Philipp .Contains?? luketheduke6-Jan-06 3:01
luketheduke6-Jan-06 3:01 There's something I don't understand:In your code you check if a node is already in closed list by calling FCLosedList.Contains().But if ClosedList only searches for the references and AStarNode.GetSuccessors() always creates new objects, how can it ever find anything?Wouldn't you have to iterate through the whole closed list and always compare Successor and the closed list item with IsSameState()?EDIT: one more thing: does it make sense to keep the closed list sorted for costs? In all A* articles I read, the closed heap gets never corrected but if a successor is in the closed list, it gets thrown away instantly... -- modified at 10:28 Friday 6th January, 2006
Re: .Contains?? DrGLaZ1-May-06 0:45
DrGLaZ1-May-06 0:45 So having foreach (AStarNode Node in FClosedList){ if (NodeSuccessor.IsSameState(Node)) { NodeClosed = Node; break; }}instead ofif(FClosedList.Contains(NodeSuccessor)) NodeClosed = (AStarNode)FClosedList[FClosedList.IndexOf(NodeSuccessor)];and the same for FOpenedListand using FSolution.Add instead of FSolution.Insert it work pretty good Thanks you very much! -- modified at 5:50 Monday 1st May, 2006
Re: .Contains?? luketheduke1-May-06 5:33
luketheduke1-May-06 5:33 yes, that's just the way I did it.by the way, I had to rewrite the whole pathfind() routine. it just wouldn't work for me, so I followed some tutorial. it works like a charm now. Re: .Contains?? [modified] Vecware8-Sep-08 13:39
Vecware8-Sep-08 13:39 Hey, thanks for your improvements, they really helped me out. Finally I think Tanis code is one of the best C# A* implementations out there. Thanks for it as well.One last bugfix: AddFOpenList.Clear();FClosedList.Clear();at the beginning where it clears all the existing paths, otherwise the algorithm fails after the third of fourth time...strange but that fixes it! modified on Monday, September 8, 2008 7:14 PM
small fix coyotesoftware13-Dec-05 10:24
coyotesoftware13-Dec-05 10:24 I really appreciate the code sample it was very useful. I didn't find one problem that seems to be a small oversite.in astar.cs shouldn'tFOpenList.Remove(NodeOpen); and FClosedList.Remove(NodeClosed); lines 294, and 297 be changed to FOpenList.Remove(NodeSuccessor);FClosedList.Remove(NodeSuccessor);I changed it in my code and it fixed an endless loop problem I was hitting. Once again thanks a lot for all the work you did it made understanding the AStar search a lot easier for me.-dan Question about IComparer Johnny Scanner31-Jul-05 21:13
Johnny Scanner31-Jul-05 21:13 The IComparer interface is implemented by the AStarNode2D class. This is necessary because you want to be able to insert into your "Heap" collection in the proper place, so that you can get O(1) for retrievals for lowest cost in the open list right?I think the problem here is that the same code that's used to determine the cost is also used to determine if it's the same object.So, for instance, let's say that map[8,9].TotalCost = 17, and map[9,9].TotalCost = 17. So, let's say that map[9,9] is not in the open list, if you ask for openList.Contains(map[9,9]), you're going to true, when in fact you should get false. map[8,9] and map[9,9] are not the same node, they just happen to have the same cost.Let me know if I'm missing something here. Thanks. Re: Question about IComparer terpstradave28-May-07 11:15
terpstradave28-May-07 11:15 Exactly. You need to change the compareTo function to be virtual and then implement that as part of your node class to reflect how you want things to be sorted and compared. Path Finding with Collision Avoidance Miss Sridevi Palepu22-Jun-05 4:17
Miss Sridevi Palepu22-Jun-05 4:17 Does this implementation gives information about Path Planning Algorithm with multiple moving objects moving around and implementing the collision avoidance. Looking for reply.Regards. Re: Path Finding with Collision Avoidance Johnny Scanner31-Jul-05 21:16
Johnny Scanner31-Jul-05 21:16 I'm looking at doing the same thing and without having actually implemented it, I think you would just surround the other moving objects (like robots or other players for instance) with higher cost paths to them. The earlier you want to avoid them, the bigger the radius you place around the moving objects. Easier said than done, of course, because you have to identify where the object are and adjust your map accordingly.Good luck. An issue for games... LynxRaven30-Mar-05 19:29
LynxRaven30-Mar-05 19:29 I admit I haven't looked at your code yet, but I find something interesting... I have now seen this issue in two algorithms I have looked at... If someone is walking to the entrance of a maze (as your screenshot shows), why would they first walk diagonally up, then down to the maze entrance... I believe that for each step diagonally you have given the same cost as a vertical or horizontal move. Where the actual cost should be more like 1.414 (so say 1.5).If you were to give a cost to a diagonal movement of 1.5, then there would be no unnecessary diagonal movements unless they were shorter than a vertical or horizontal movement... Re: An issue for games... Johnny Scanner31-Jul-05 21:21
Johnny Scanner31-Jul-05 21:21 The screenshot he shows is actually from top-left to bottom-right based on the code.Based on his map (below) it's working the way it should. It even works when I flatten it out (by replacing the 2, 3, 2 with 1, 1, 1). However, when I switch the starting location to 9,9 and the ending location to 0,0, it just hangs. I think there's a bug in the .Contains logic when determining if the node is in the open or closed lists. Will post more information if I figure it out.static int[,] Map = {{ 1,-1, 1, 1, 1,-1, 1, 1, 1, 1 },{ 1,-1, 1,-1, 1,-1, 1, 1, 1, 1 },{ 1,-1, 1,-1, 1,-1, 1, 1, 1, 1 },{ 1,-1, 1,-1, 1,-1, 1, 1, 1, 1 },{ 1,-1, 1,-1, 1,-1, 1, 1, 1, 1 },{ 1,-1, 1,-1, 1,-1, 1, 1, 1, 1 },{ 1,-1, 1,-1, 1,-1, 1, 1, 1, 1 },{ 1,-1, 1,-1, 1,-1, 1, 1, 1, 1 },{ 1,-1, 1,-1, 1,-1, 1, 2, 1, 1 },{ 1, 1, 1,-1, 1, 1, 2, 3, 2, 1 } Slow and lot of bugs... jplacombe28-Feb-05 5:43
jplacombe28-Feb-05 5:43 Hi,At first I've been very impressed by your A* implementation in C#.For my RTS I've got my own implementation (also in C#, but uses classic ArrayList and full array search) which is pretty slow and I decided to integrate your A* implementation in my project.Results :This implementation is about 50 times slower than my basic one.It enters endless loops for pathes longer than about 20 tiles (my map is 64*64).I don't understand why because your implementation seems to be OK, and you use optimized data structures, so I think there's a mistake somewhere in your code.Jean-PaulPS : Do not see in my post anything hostile, you've done a really good work, it's just to help you or the others readers to find what's wrong in this implementation.
Bug Alex_V_X8-Feb-05 21:08
Alex_V_X8-Feb-05 21:08 is not working in mazes Earlier A* path-finding article mav.northwind4-Jan-04 21:35
mav.northwind4-Jan-04 21:35 Sune, did you see this article on cp: http://www.codeproject.com/csharp/graphs_astar.asp?target=path[^]?IMHO an excellent explanation of A* as well with a nice graphical interface...Just to let you know...mav
Re: Earlier A* path-finding article sune.trudslev5-Jan-04 0:27
sune.trudslev5-Jan-04 0:27 Yes, I found it as I was adding my finished article here. It ties in nicely with the graph, but I felt since mine was a generic AStar that it still had it's place. Re: Earlier A* path-finding article mav.northwind5-Jan-04 0:33
mav.northwind5-Jan-04 0:33 Sure it has!I just wasn't sure you had found the article because you saidthat you couldn't find anything in C#. Last Visit: 31-Dec-99 19:00 Last Update: 23-Jan-17 23:37Refresh1
Last Updated 4 Jan 2004	Article Copyright 2004 by Sune TrudslevEverything else

value: This website is a community for computer programmers with articles on different topics and programming languages such as web development, software development, C++, Java, and other topics. Once a visitor registers a user account on the site, they can gain reputation which allows users to unlock different privileges such as the ability to store personal files in the user's account area, have live hyperlinks in their profile biography, and more.


text:
NTLM Authorization Proxy Server / Bugs / #25 HEAD request incorrectly handled
#25 HEAD request incorrectly handled
I'm behind a squid proxy server (2.5.STABLE13) and am using NTLMAPS to allow another tool to talk through it.
The tool (rubygems) makes HEAD requests to obtain info about whether it needs to do a GET of a resource. The HEAD request fails.
What I've found is the processing of the HEAD response needs to be aware of when the response is associated with doing the authentication against the squid proxy (though which step it is in that process I can't remember).
I've attached a patch that fixes the problem. You'll note that I've added a 'mode' parameter to allow for an exception to the generic handling of HEAD responses.
However, I'm not sure that all HEAD processing cases are correctly handled, so there may need to be some more work done (but please don't ask me because I only know enough python to do a little bit of debugging :-).
NOTE: The patch file _requires_ you to have applied that patch with bug 1647195 (I'm not sure if those features are needed, I just made the change agains 0.9.9.6 patched with that patch).
NOTE: The patch was created assuming you have the 0.9.9.6 distro (ie: the directory name is in the patch).
bboesen@tpg.com.au
HEAD request patch head_auth.patch
Logged In: NO This appears to be the same problem I am having while using wget behind ntlmaps.
With the -N (newer) switch, wget issues a HEAD request to check the last modified date of the file being downloaded over http.
Unfortunately, no response seems to return to wget after ntlmaps authentication.
Have tried Brendan's patch, to no avail. If you would like to refer to this comment somewhere else in this project, copy and paste the following link:

value: This website is a web service that offers software consumers a centralized online location to control and manage open-source software projects and research business software. It provides source code repository hosting, bug tracking, mirroring of downloads for load balancing, a wiki for documentation, developer and user mailing lists, user-support forums, user-written reviews and ratings, a news bulletin, micro-blog for publishing project updates, and other features.