1. A method of generating public and private keys for a cryptosystem comprising: providing parameters, n, ξ, β and γ by the execution of a central processing unit, wherein n is an integer >3, ξ is a real number >0, β is a real number >0 and γ is a real number >0; representing a lattice L using the parameters; generating an integer t representing the sequence (t 0 ,. .. , t n−1 ), as a public key for the cryptosystem wherein 0≦t i <n γ , for i=1,. .. , n−1; creating random values for the lattice L by selecting an integer d and a point q , such that: d=an integer selected at random in the interval [ 1 2 ⁢ ( n - 1 ) ξ ⁡ ( n - 1 ) , ( n - 1 ) ξ ⁡ ( n - 1 ) ] ; the point q=<q 1 ,. .. , q n−1 >ε set I n−1 ((n−1) −β ) ∩ dQ selected at random, wherein Q = ∏ i = 1 n ⁢ ⁢ [ b i k , b i + 1 k ) ; wherein the lattice L has a basis with a sequence of vectors e 1 ,. .. , e n−1 , ν; wherein k=└(n−1) ξ(n−1)−1 ┘ is a positive integer, wherein ν is a vector in the lattice L such that v = ( n - 1 ) - ξ ⁡ ( n - 1 ) - β ⁢ e n + ∑ i = 1 n - 1 ⁢ fr ⁡ ( q i d , kn γ ) ⁢ e i , wherein fr(qi/d, kn γ )=b i /k+t i /kn γ , wherein the integers b i , i=0,1,. .. , n−1 are in the interval [0,k]; and generating a private key u=dν−Σ i=1 n−1 a i e i for the cryptosystem, wherein a 1 ,. .. , a n−1 are integers such that for i=1,. .. , n−1, - 1 2 ≤ e i ⁡ ( dv - ∑ i = 1 n - 1 ⁢ a i ⁢ e i ) < 1 2 .