1461044838-8664708e-d3a2-4f26-b5f9-9db58bc5cac6

1. A method for use with a secure data storage system, the method comprising:
transforming, with a processor, a first data segment of a first bit length into a second data segment of a second bit length;
if the first bit length is equal to or less than the second bit length,
performing, with a processor, one or more data management operations on the first data segment to produce a third data segment of a third bit length; and
storing the third data segment in a first memory location associated with the first data segment;

if the first bit length is greater than the second bit length,
appending, with a processor, a number of padding bits to the second data segment to produce a fourth data segment having a fourth bit length greater than or equal to a minimum input size to the one or more data management operations; and
performing, with a processor, the one or more data management operations on the fourth data segment producing a fifth data segment of a fifth bit length; and

if the fifth bit length is less than the first bit length and greater than or equal to the fourth bit length,
appending, with a processor, a number of padding bits to the fifth data segment to produce a sixth data segment having a sixth bit length equal to the first bit length; and

storing the sixth data segment in the first memory location, wherein the storing is performed by the processor and comprises writing information to non-volatile data storage in the secure data storage system.
2. The method of claim 1 further comprising:
storing, when the third bit length is greater than the first bit length, a first portion of the third data segment in the first memory location and a second portion of the third data segment in metadata associated with the first memory location.
3. The method of claim 2 wherein the first and second portions of the third data segment constitute the third data segment in its entirety.
4. The method of claim 1 further comprising:
storing, when the fifth bit length is greater than the first bit length, a first portion of the fifth data segment in the first memory location and a second portion of the fifth data segment in metadata associated with the first memory location.
5. The method of claim 4 wherein the first and second portions of the third data segment constitute the fifth data segment in its entirety.
6. The method of claim 1 further comprising:
reading the third data segment from the first memory location; and
performing second one or more data management operations on the third data segment to produce the first data segment.
7. The method of claim 2 further comprising:
reading the first portion of the third data segment from the first memory location and the second portion of the third data segment from the metadata;
concatenating the first and second portions to form the third data segment; and
performing second one or more data management operations on the third data segment to produce the first data segment.
8. The method of claim 1 further comprising:
if the second bit length is less than the first bit length,
reading a first number of bits equal to the fifth bit length from the first memory location and performing second one or more data management operations on the first number of bits to produce the fourth data segment,
reading a second number of bits equal to the second bit length from the fourth data segment and performing an inverse transformation on the second number of bits to produce the first data segment.
9. The method of claim 4 further comprising:
reading the first portion of the fifth data segment from the first memory location;
reading the second portion of the fifth data segment from the metadata;
concatenating the first and second portions to form the fifth data segment;
performing second data management operations on the fifth data segment to produce the fourth data segment; and
if the second bit length is less than the first bit length,
reading a number of bits equal to the second bit length from the fourth data segment and performing an inverse transformation on the number of bits producing the first data segment.
10. The method of claim 1 wherein transforming the first data segment comprises executing an encoding algorithm.
11. The method of claim 1 wherein transforming the first data segment comprises executing a data compression algorithm.
12. The method of claim 1 wherein the one or more data management operations comprise an encryption operation.
13. The method of claim 1 wherein the one or more data management operations comprise one or more of the following operations:
a comparison operation,
an error correction operation, and
a compression operation.
14. The method of claim 1 wherein the one or more data management operations comprise one or more of the following cryptographic operations:
a symmetric-key encryption operation,
a symmetric-key decryption operation,
an asymmetric-key encryption operation,
an asymmetric-key decryption operation,
a hashing operation,
a keyed hashing operation,
a digital signature computation, and
a digital signature verification.
15. The method of claim 1 wherein the one or more data management operations comprise at least one of the following:
an encryption operation utilizing Advanced Encryption Standard symmetric-key algorithm; and
a decryption operation utilizing Advanced Encryption Standard symmetric-key algorithm.
16. The method of claim 1 wherein the one or more data management operations comprise at least one of the following:
an encryption operation utilizing Data Encryption Standard symmetric-key algorithm; and
a decryption operation utilizing Data Encryption Standard symmetric-key algorithm.
17. A method for use with a secure data storage system, the method comprising:
inputting a first data segment of a first bit length into a compression algorithm to produce a second data segment of a second bit length, wherein the inputting is performed by a computer;
if the first bit length is equal to or less than the second bit length,
inputting the first data segment into one or more cryptographic operations to produce a third data segment of a third bit length, wherein the inputting is performed by the computer; and
storing the third data segment in a first memory location associated with the first data segment;

if the first bit length is greater than the second bit length,
appending a number of padding bits to the second data segment to produce a fourth data segment having a fourth bit length greater than or equal to a threshold input size to the one or more cryptographic operations, wherein the appending is performed by the computer;
inputting the fourth data segment into the one or more cryptographic operations to produce a fifth data segment of a fifth bit length, wherein the inputting is performed by the computer; and

if the fifth bit length is less than the first bit length and greater than or equal to the fourth bit length,
appending a number of padding bits to the fifth data segment to produce a sixth data segment having a sixth bit length equal to the first bit length, wherein the appending is performed by the computer; and

storing the sixth data segment in the first memory location, wherein the storing is performed by the computer and comprises writing information to non-volatile data storage in the secure data storage system.
18. The method of claim 17 further comprising:
storing, when the third bit length is greater than the first bit length, a first portion of the third data segment in the first memory location and a second portion of the third data segment in metadata associated with the first memory location.
19. The method of claim 18 wherein the first and second portions constitute the third data segment in its entirety.
20. The method of claim 17 further comprising:
storing, when the fifth bit length is greater than the first bit length, a first portion of the fifth data segment in the first memory location and a second portion of the fifth data segment in metadata associated with the first memory location.
21. The method of claim 20 wherein the first and second portions constitute the fifth data segment in its entirety.
22. The method of claim 17 further comprising:
reading the third data segment from the first memory location; and
performing one or more security operations on the third data segment to produce the first data segment.
23. The method of claim 18 further comprising:
reading the first portion of the third data segment from the first memory location and the second portion of the third data segment from the metadata;
concatenating the first and second portions to form the third data segment; and to perform one or more security operations on the third data segment to produce the first data segment.
24. The method of claim 17 further comprising:
if the second bit length is less than the first bit length,
reading a first number of bits equal to the fifth bit length from the first memory location and
performing one or more security operations on the first number of bits to produce the fourth data segment,
reading a second number of bits equal to the second bit length from the fourth data segment and
performing the inverse of the compression algorithm on the second number of bits to produce the first data segment.
25. The method of claim 20 further comprising:
reading the first portion of the fifth data segment from the first memory location;
reading the second portion of the fifth data segment from the metadata;
concatenating the first and second portions to form the fifth data segment;
performing one or more security operations on the fifth data segment to produce the fourth data segment; and
if the second bit length is less than the first bit length,
reading a number of bits equal to the second bit length from the fourth data segment and
performing the inverse of the compression algorithm on the number of bits to produce the first data segment.
26. A method comprising:
inputting a first data segment of a first bit length into a transformation algorithm to produce a second data segment of a second bit length;
if the first bit length is equal to or less than the second bit length,
performing, using a processor, one or more data management operations on the first data segment to produce a third data segment of a third bit length and
storing the third data segment in a first memory location associated with the first data segment; and

if the first bit length is greater than the second bit length,
appending a number of padding bits to the second data segment to produce a fourth data segment having a fourth bit length greater than or equal to a minimum input size to the one or more data management operations, and
performing the one or more data management operations on the fourth data segment to produce a fifth data segment of a fifth bit length,

if the fifth bit length is less than the first bit length and greater than or equal to the fourth bit length,
extracting n bits, where n equals the fourth bit length, from the fifth data segment and appending a number of padding bits to the n bits to produce a sixth data segment having a sixth bit length equal to the first bit length and storing the sixth data segment in the first memory location.
27. The method of claim 26 further comprising:
storing the last y bits of the fifth data segment, where y equals the fifth bit length minus the fourth bit length, in metadata associated with the first memory location.
28. The method of claim 27 further comprising:
reading the n bits from the sixth data segment in the first memory location;
reading the y bits from the metadata;
concatenating the n bits and the y bits to form the fifth data segment;
performing one or more data management operations on the fifth data segment to produce the fourth data segment; and
if the second bit length was less than the first bit length,
reading a number of bits equal to the second bit length from the fourth data segment and
performing the inverse of the transformation algorithm on the number of bits to produce the first data segment.
29. The method of claim 26 wherein the transformation algorithm comprises at least one of the following:
a compression algorithm; and
an encoding algorithm.
30. A method comprising:
compressing a first data segment, having a first bit length and a position within an arrangement of a plurality of data segments in a memory array, to produce:
a second data segment of a second bit length,
an integer representing the second bit length, and
a value representing whether or not the first data segment was compressed;

if the value indicates that the first data segment was not compressed,
encrypting the first data segment using an encryption algorithm to produce a third data segment of a third bit length, and
writing the third data segment to the first data segment’s position in the memory array wherein the arrangement of the plurality of data segments is maintained;

if the value indicates that the first data segment was compressed,
concatenating the integer with the second data segment to produce a fourth data segment having a fourth bit length,
appending a number of padding bits to the fourth data segment to produce a fifth data segment having a fifth bit length greater than or equal to a minimum input size to the encryption algorithm, and
encrypting the fifth data segment using the encryption algorithm to produce a sixth data segment of a sixth bit length;

if the sixth bit length is less than the first bit length and less than or equal to the fifth bit length,
appending a number of padding bits to the sixth data segment to produce a seventh data segment having a seventh bit length equal to the first bit length, and
writing the seventh data segment to the first data segment’s position in the memory array wherein the arrangement of the plurality of data segments is maintained; and

if the sixth bit length is less than the first bit length and greater than or equal to the fifth bit length,
extracting, using a processor, n bits, where n equals the fifth bit length, from the sixth data
appending a number of padding bits to the n bits to produce an eighth data segment having an eighth bit length equal to the first bit length, and
writing the eighth data segment to the first data segment’s position in the memory array wherein the arrangement of the plurality of data segments is maintained.
31. The method of claim 30 further comprising:
writing, when the third bit length is greater than the first bit length, a first portion of the third data segment to the first data segment’s position in the memory array wherein the arrangement of the plurality of data segments is maintained and writing a second portion of the third data segment in metadata associated with the first data segment’s position in the memory array.
32. The method of claim 31 wherein the first and second portions constitute the third data segment in its entirety.
33. The method of claim 30 further comprising:
writing, when the sixth bit length is greater than the first bit length, a first portion of the sixth data segment to the first data segment’s position in the memory array wherein the arrangement of the plurality of data segments is maintained and writing a second portion of the sixth data segment and the value in metadata associated with the first data segment’s position in the memory array.
34. The method of claim 33 wherein the first and second portions constitute the sixth data segment in its entirety.
35. The method of claim 30 further comprising:
reading the third data segment from the memory array; and
decrypting the third data segment using the encryption algorithm to produce the first data segment.
36. The method of claim 31 further comprising:
reading the first portion of the third data segment from the first data segment’s position in the memory array and the second portion of the third data segment from the metadata;
concatenating the first and second portions to form the third data segment; and
decrypting the third data segment using the encryption algorithm to produce the first data segment.
37. The method of claim 30 further comprising:
storing the value in metadata associated with the first data segment’s position in the memory array.
38. The method of claim 37 further comprising:
reading the value from the metadata; and
if the value indicates that the first data segment was compressed,
reading a first number of bits equal to the sixth bit length from the first data segment’s position in the memory array,
decrypting the first number of bits to produce the fifth data segment,
reading a second number of bits equal to the fourth bit length from the fifth data segment,
separating the integer and the second data segment from the second number of bits and
inputting the second data segment, the integer and the value into a decompression algorithm that is the inverse of a compression algorithm used to compress the first data segment to produce the first data segment.
39. The method of claim 37 further comprising:
reading the value from the metadata; and
if the value indicates that the first data segment was compressed,
decrypting a minimum number of bits necessary from the first data segment’s position in the memory array to determine the integer,
computing the fifth bit length using the integer and the minimum input size,
inputting a first number of bits equal to the fifth bit length from the first data segment’s position in the memory array to a decryption algorithm to produce the fifth data segment,
computing the fourth bit length using the integer and the minimum input size, using the computed fourth bit length to extract the fourth data segment from the fifth data segment,
extracting the last integer bits from the fourth data segment to obtain the second data segment, and
inputting the second data segment, the integer and the value into a decompression algorithm that is the inverse of a compression algorithm used to compress the first data segment to produce the first data segment.
40. The method of claim 33 further comprising:
reading the first portion of the sixth data segment from the first data segment’s position in the memory array;
reading the second portion of the sixth data segment and the value from the metadata;
concatenating the first and second portions to form the sixth data segment; and
decrypting the sixth data segment to obtain the fifth data segment and the integer,
computing the fourth bit length using the integer and the minimum input size,
using the computed fourth bit length to extract the fourth data segment from the fifth data segment,
extracting the last integer bits from the fourth data segment to obtain the second data segment, and
inputting the second data segment, the integer and the value into a decompression algorithm that is the inverse of a compression algorithm used to compress the first data segment to produce the first data segment.
41. The method of claim 30 further comprising:
storing the last y bits of the sixth data segment, where y equals the sixth bit length minus the fifth bit length, in metadata associated with the first data segment’s position in the memory array.
42. The method of claim 41 further comprising:
reading the first n bits from the eighth data segment in the memory array;
reading the y bits from the metadata;
concatenating the n bits and the y bits to form the sixth data segment;
decrypting the sixth data segment to obtain the fifth data segment and the integer,
computing the fourth bit length using the integer and the minimum input size, using the computed fourth bit length to extract the fourth data segment from the fifth data segment,
extracting the last integer bits from the fourth data segment to obtain the second data segment, and
inputting the second data segment, the integer and the value into a decompression algorithm that is the inverse of a compression algorithm used to compress the first data segment to produce the first data segment.
43. A method comprising:
compressing a first data segment, having a first bit length and a position within an arrangement of a plurality of data segments in a memory array, to produce:
a second data segment of a second bit length,
an integer representing the second bit length, and
a value representing whether or not the first data segment was compressed;

if the value indicates that the first data segment was not compressed,
performing a hash function on the first data segment to produce a third data segment of a third bit length, and
writing the third data segment to the first data segment’s position in the memory array wherein the arrangement of the plurality of data segments is maintained;

if the value indicates that the first data segment was compressed,
concatenating the integer with the second data segment to produce a fourth data segment having a fourth bit length,
appending a number of padding bits to the fourth data segment to produce a fifth data segment having a fifth bit length greater than or equal to a minimum input size to the hash function, and
performing an operation on the fifth data segment using the hash function algorithm to produce a sixth data segment of a sixth bit length;

if the sixth bit length is less than the first bit length and less than or equal to the fifth bit length,
appending a number of padding bits to the sixth data segment to produce a seventh data segment having a seventh bit length equal to the first bit length, and
writing the seventh data segment to the first data segment’s position in the memory array wherein the arrangement of the plurality of data segments is maintained and

if the sixth bit length is less than the first bit length and greater than the fifth bit length,
extracting n bits, where n equals the fifth bit length, from the sixth data segment;
appending a number of padding bits to the first n bits to produce an eighth data segment having an eighth bit length equal to the first bit length, and
writing the eighth data segment to the first data segment’s position in the memory array wherein the arrangement of the plurality of data segments is maintained.
44. The method of claim 43 further comprising:
writing, when the third bit length is greater than the first bit length, a first portion of the third data segment to the first data segment’s position in the memory array wherein the arrangement of the plurality of data segments is maintained and writing a second portion of the third data segment in metadata associated with the first data segment’s position in the memory array.
45. The method of claim 44 wherein the first and second portions constitute the third data segment in its entirety.
46. The method of claim 43 further comprising:
writing, when the sixth bit length is greater than the first bit length, a first portion of the sixth data segment to the first data segment’s position in the memory array wherein the arrangement of the plurality of data segments is maintained and writing a second portion of the sixth data segment and the value in metadata associated with the first data segment’s position in the memory array.
47. The method of claim 46 wherein the first and second portions constitute the sixth data segment in its entirety.
48. The method of claim 43 further comprising:
reading the third data segment from the memory array; and
performing a hash function on the third data segment to obtain the first data segment.
49. The method of claim 44 further comprising:
reading the first portion of the third data segment from the first data segment’s position in the memory array and the second portion of the third data segment from the metadata;
concatenating the first and second portions to form the third data segment; and
performing a hash function on the third data segment to obtain the first data segment.
50. The method of claim 43 further comprising:
storing the value in metadata associated with the first data segment’s position in the memory array.
51. The method of claim 50 further comprising:
reading the value from the metadata; and
if the value indicates that the first data segment was compressed,
reading a number of bits equal to the sixth bit length from the first data segment’s position in the memory array,
performing a hash function on the sixth number of bits to obtain the fifth data segment,
reading a second number of bits equal to the fourth bit length from the fifth data segment,
separating the integer and the second data segment from the second number of bits and
inputting the second data segment, the integer and the value into a decompression algorithm that is the inverse of a compression algorithm used to compress the first data segment to produce the first data segment.
52. The method of claim 45 further comprising:
reading the first portion of the sixth data segment from the first data segment’s position in the memory array;
reading the second portion of the sixth data segment and the value from the metadata;
concatenating the first and second portions to form the sixth data segment; and
performing a hash function to obtain the fifth data segment and the integer,
computing the fourth bit length using the integer and the minimum input size, using the computed fourth bit length to extract the fourth data segment from the fifth data segment,
extracting the last integer bits from the fourth data segment to obtain the second data segment, and
inputting the second data segment, the integer and the value into a decompression algorithm that is the inverse of a compression algorithm used to compress the first data segment to produce the first data segment.
53. The method of claim 43 further comprising:
storing the last y bits of the sixth data segment, where y equals the sixth bit length minus the fifth bit length, in metadata associated with the first data segment’s position in the memory array.
54. The method of claim 53 further comprising:
reading the n bits from the eighth data segment in the memory array;
reading the y bits from the metadata;
concatenating the n bits and the y bits to form the sixth data segment; and
performing a hash function on the sixth data segment to obtain the fifth data segment and the integer,
computing the fourth bit length using the integer and the minimum input size,
using the computed fourth bit length to extract the fourth data segment from the fifth data segment,
extracting the last integer bits from the fourth data segment to obtain the second data segment, and
inputting the second data segment, the integer and the value into a decompression algorithm that is the inverse of a compression algorithm used to compress the first data segment to produce the first data segment.

The claims below are in addition to those above.
All refrences to claim(s) which appear below refer to the numbering after this setence.

1. A bird deterrent for mounting on a surface, comprising:
an elongated rail of plastic;
a plurality of pairs of prongs extending laterally from opposite sides of the rail such that successive prongs on each side of the rail-alternate between a higher position and a lower position;
a plurality of upwardly extending intermediate prongs disposed among the pairs of laterally extending prongs; and
wherein the rail, the pairs of laterally extending prongs and the intermediate prongs are all injection molded as a single continuous piece.
2. The bird deterrent of claim 1, wherein each of the pairs has one prong that extends from the rail at a higher angle and one prong that extents from the rail at a lower angle.
3. The bird deterrent of claim 2, wherein each of the higher and lower angles differ from an angle defined by the intermediate prongs relative to the rail.
4. The bird deterrent of claim 1, wherein at least one of the laterally extending prongs extend laterally at about 30 degrees relative to the rail.
5. The bird deterrent of claim 1, wherein at least one of the laterally extending prongs extend laterally from the rail at about 70 degrees relative to the underlying surface.
6. The bird deterrent of claim 2, wherein the higher and lower angles of the laterally extending prongs differ by about 40 degrees.
7. The bird deterrent of claim 1, further comprising a plurality of spaced flanges extending horizontally from the rail.
8. The bird deterrent of claim 1, further comprising a plurality of spaced flanges extending from the rail, each flange continuous with one of the plurality of laterally extending prongs.
9. The bird deterrent of claim 1, wherein first and second members of each of the plurality of pairs of laterally extending prongs extend indirectly from the rail, via laterally projecting arms.
10. The bird deterrent of claim 1, wherein first and second members of each of the plurality of pairs of laterally extending prongs include at least some portion having a round cross-sectional area.
11. The bird deterrent of claim 1, wherein first and second members of each of the plurality of pairs of laterally extending prongs include at least some portion having a cross-shaped cross-section.
12. The bird deterrent of claim 1, wherein each of the laterally extending prongs terminates in a sharp tip.
13. The bird deterrent of claim 1, wherein the rail has a flat bottom surface.
14. The bird deterrent of claim 1, wherein the rail has a flat bottom surface and a longitudinal trough.
15. The bird deterrent of claim 1, further comprising a ridge along the rail.
16. The bird deterrent of claim 1, wherein each of the intermediate prongs includes a first portion having a round cross-sectional area and a second portion having a round cross-sectional area from the rail.
17. The bird deterrent of claim 1, wherein the laterally and upwardly extending prongs appear as five fanned projections from an end view of the deterrent.
18. The bird deterrent of claim 1, wherein the intermediate prongs extend normally from the rail.
19. The bird deterrent of claim 1, wherein the intermediate prongs extend normally-from a ridge running along an upper surface of the rail.
20. The bird deterrent of claim 1, wherein the rail includes a plurality of spaced cutting notches.
21. A bird deterrent comprising:
a single injection molded piece having an elongated base; and
pluralities of laterally and upwardly extending prongs that collectively project from a rail in five different directions from the base, wherein the laterally extending prongs on each side of the rail alternate between lower and higher angles relative to the base.
22. The bird deterrent of claim 21, wherein the plurality of laterally extending prongs are arranged in pairs, with each pair having a first prong extending from a first side of the base at a lower angle, and a second prong extending from an opposite side of the base at a higher angle.
23. The bird deterrent of claim 21, wherein the prongs extending laterally from a first side of the base extend alternately at a lower angle and a higher angle.
24. The bird deterrent of claim 21, wherein each of the plurality of prongs further comprises a portion having a round cross-section.
25. A bird deterrent for mounting on a surface, comprising: an elongated rail and a plurality of laterally extending prongs which is injection molded as a single continuous piece, said laterally extending prongs alternating at various angles of no more than 70 degrees relative to the underlying surface.